From fb1ef3544529de3aad4116492499b527efc0956f Mon Sep 17 00:00:00 2001 From: Joern Weissenborn Date: Fri, 24 Nov 2017 19:37:41 +0100 Subject: [PATCH 1/2] ESP8266mDNS: Fix flushing answers when there is no query resopense. * moved cleanup of answerse from `parsedPackage` to `queryService` * removed `_newQuery` --- libraries/ESP8266mDNS/ESP8266mDNS.cpp | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/libraries/ESP8266mDNS/ESP8266mDNS.cpp b/libraries/ESP8266mDNS/ESP8266mDNS.cpp index 66baf12aff..400a09e1db 100644 --- a/libraries/ESP8266mDNS/ESP8266mDNS.cpp +++ b/libraries/ESP8266mDNS/ESP8266mDNS.cpp @@ -123,7 +123,6 @@ MDNSResponder::MDNSResponder() : _conn(0) { _instanceName = ""; _answers = 0; _query = 0; - _newQuery = false; _waitingForAnswers = false; } MDNSResponder::~MDNSResponder() { @@ -285,6 +284,17 @@ int MDNSResponder::queryService(char *service, char *proto) { #ifdef DEBUG_ESP_MDNS_TX DEBUG_ESP_PORT.printf("queryService %s %s\n", service, proto); #endif + + // Clear answer list + MDNSAnswer *answer; + int numAnswers = _getNumAnswers(); + for (int n = numAnswers - 1; n >= 0; n--) { + answer = _getAnswerFromIdx(n); + os_free(answer->hostname); + os_free(answer); + answer = 0; + } + _answers = 0; if (_query != 0) { os_free(_query); @@ -293,7 +303,6 @@ int MDNSResponder::queryService(char *service, char *proto) { _query = (struct MDNSQuery*)(os_malloc(sizeof(struct MDNSQuery))); os_strcpy(_query->_service, service); os_strcpy(_query->_proto, proto); - _newQuery = true; char underscore[] = "_"; @@ -523,19 +532,6 @@ void MDNSResponder::_parsePacket(){ answerHostName[0] = '\0'; - // Clear answer list - if (_newQuery) { - int oldAnswers = _getNumAnswers(); - for (int n = oldAnswers - 1; n >= 0; n--) { - answer = _getAnswerFromIdx(n); - os_free(answer->hostname); - os_free(answer); - answer = 0; - } - _answers = 0; - _newQuery = false; - } - while (numAnswers--) { // Read name stringsRead = 0; From 775022c72a596e62ebe6ccc805e49350452de62a Mon Sep 17 00:00:00 2001 From: Joern Weissenborn Date: Fri, 24 Nov 2017 19:55:13 +0100 Subject: [PATCH 2/2] ESP8266MDNS: Removed `_newQuery` from header --- libraries/ESP8266mDNS/ESP8266mDNS.h | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/ESP8266mDNS/ESP8266mDNS.h b/libraries/ESP8266mDNS/ESP8266mDNS.h index 37874194ec..756f71ac00 100644 --- a/libraries/ESP8266mDNS/ESP8266mDNS.h +++ b/libraries/ESP8266mDNS/ESP8266mDNS.h @@ -116,7 +116,6 @@ class MDNSResponder { String _instanceName; struct MDNSAnswer * _answers; struct MDNSQuery * _query; - bool _newQuery; bool _waitingForAnswers; WiFiEventHandler _disconnectedHandler; WiFiEventHandler _gotIPHandler;