diff --git a/libraries/ESP8266mDNS/ESP8266mDNS.cpp b/libraries/ESP8266mDNS/ESP8266mDNS.cpp index e67ba75c89..0e1a01bc45 100644 --- a/libraries/ESP8266mDNS/ESP8266mDNS.cpp +++ b/libraries/ESP8266mDNS/ESP8266mDNS.cpp @@ -115,15 +115,18 @@ struct MDNSQuery { char _proto[4]; }; - -MDNSResponder::MDNSResponder() : _conn(0) { - _services = 0; - _instanceName = ""; +void MDNSResponder::_initVar() { _answers = 0; _query = 0; _newQuery = false; _waitingForAnswers = false; } + +MDNSResponder::MDNSResponder() : _conn(0) { + _initVar(); + _services = 0; + _instanceName = ""; +} MDNSResponder::~MDNSResponder() { if (_query != 0) { os_free(_query); @@ -283,7 +286,9 @@ int MDNSResponder::queryService(char *service, char *proto) { #ifdef MDNS_DEBUG_TX Serial.printf("queryService %s %s\n", service, proto); #endif - + + _initVar(); + if (_query != 0) { os_free(_query); _query = 0; @@ -292,7 +297,7 @@ int MDNSResponder::queryService(char *service, char *proto) { os_strcpy(_query->_service, service); os_strcpy(_query->_proto, proto); _newQuery = true; - + char underscore[] = "_"; // build service name with _ diff --git a/libraries/ESP8266mDNS/ESP8266mDNS.h b/libraries/ESP8266mDNS/ESP8266mDNS.h index c8b3ee89e1..4a03797829 100644 --- a/libraries/ESP8266mDNS/ESP8266mDNS.h +++ b/libraries/ESP8266mDNS/ESP8266mDNS.h @@ -122,6 +122,7 @@ class MDNSResponder { WiFiEventHandler _gotIPHandler; + void _initVar(); uint16_t _getServicePort(char *service, char *proto); MDNSTxt * _getServiceTxt(char *name, char *proto); uint16_t _getServiceTxtLen(char *name, char *proto);