1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-06-06 05:21:22 +03:00

Fixed bug when making multiple consecutive queries

This commit is contained in:
Lars Englund 2016-03-09 15:43:03 +01:00
parent 1569b3ba5d
commit 59c6667050
2 changed files with 17 additions and 17 deletions

View File

@ -314,14 +314,7 @@ int MDNSResponder::queryService(char *service, char *proto) {
_waitingForAnswers = false;
int numAnswers = 0;
MDNSAnswer *answer = _answers;
while (answer != 0) {
numAnswers++;
answer = answer->next;
}
return numAnswers;
return _getNumAnswers();
}
String MDNSResponder::hostname(int idx) {
@ -359,6 +352,16 @@ MDNSAnswer* MDNSResponder::_getAnswerFromIdx(int idx) {
return answer;
}
int MDNSResponder::_getNumAnswers() {
int numAnswers = 0;
MDNSAnswer *answer = _answers;
while (answer != 0) {
numAnswers++;
answer = answer->next;
}
return numAnswers;
}
MDNSTxt * MDNSResponder::_getServiceTxt(char *name, char *proto){
MDNSService* servicePtr;
for (servicePtr = _services; servicePtr; servicePtr = servicePtr->_next) {
@ -468,18 +471,14 @@ void MDNSResponder::_parsePacket(){
// Clear answer list
if (_newQuery) {
answer = _answers;
while (answer != 0) {
while (answer->next != 0) {
answer = answer->next;
}
if (answer == _answers) {
_answers = 0;
}
int numAnswers = _getNumAnswers();
for (int n = numAnswers - 1; n >= 0; n--) {
answer = _getAnswerFromIdx(n);
os_free(answer->hostname);
os_free(answer);
answer = _answers;
answer = 0;
}
_answers = 0;
_newQuery = false;
}

View File

@ -124,6 +124,7 @@ private:
void _reply(uint8_t replyMask, char * service, char *proto, uint16_t port);
size_t advertiseServices(); // advertise all hosted services
MDNSAnswer* _getAnswerFromIdx(int idx);
int _getNumAnswers();
};
extern MDNSResponder MDNS;