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:
parent
1569b3ba5d
commit
59c6667050
@ -314,14 +314,7 @@ int MDNSResponder::queryService(char *service, char *proto) {
|
|||||||
|
|
||||||
_waitingForAnswers = false;
|
_waitingForAnswers = false;
|
||||||
|
|
||||||
int numAnswers = 0;
|
return _getNumAnswers();
|
||||||
MDNSAnswer *answer = _answers;
|
|
||||||
while (answer != 0) {
|
|
||||||
numAnswers++;
|
|
||||||
answer = answer->next;
|
|
||||||
}
|
|
||||||
|
|
||||||
return numAnswers;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
String MDNSResponder::hostname(int idx) {
|
String MDNSResponder::hostname(int idx) {
|
||||||
@ -359,6 +352,16 @@ MDNSAnswer* MDNSResponder::_getAnswerFromIdx(int idx) {
|
|||||||
return answer;
|
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){
|
MDNSTxt * MDNSResponder::_getServiceTxt(char *name, char *proto){
|
||||||
MDNSService* servicePtr;
|
MDNSService* servicePtr;
|
||||||
for (servicePtr = _services; servicePtr; servicePtr = servicePtr->_next) {
|
for (servicePtr = _services; servicePtr; servicePtr = servicePtr->_next) {
|
||||||
@ -468,18 +471,14 @@ void MDNSResponder::_parsePacket(){
|
|||||||
|
|
||||||
// Clear answer list
|
// Clear answer list
|
||||||
if (_newQuery) {
|
if (_newQuery) {
|
||||||
answer = _answers;
|
int numAnswers = _getNumAnswers();
|
||||||
while (answer != 0) {
|
for (int n = numAnswers - 1; n >= 0; n--) {
|
||||||
while (answer->next != 0) {
|
answer = _getAnswerFromIdx(n);
|
||||||
answer = answer->next;
|
|
||||||
}
|
|
||||||
if (answer == _answers) {
|
|
||||||
_answers = 0;
|
|
||||||
}
|
|
||||||
os_free(answer->hostname);
|
os_free(answer->hostname);
|
||||||
os_free(answer);
|
os_free(answer);
|
||||||
answer = _answers;
|
answer = 0;
|
||||||
}
|
}
|
||||||
|
_answers = 0;
|
||||||
_newQuery = false;
|
_newQuery = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,6 +124,7 @@ private:
|
|||||||
void _reply(uint8_t replyMask, char * service, char *proto, uint16_t port);
|
void _reply(uint8_t replyMask, char * service, char *proto, uint16_t port);
|
||||||
size_t advertiseServices(); // advertise all hosted services
|
size_t advertiseServices(); // advertise all hosted services
|
||||||
MDNSAnswer* _getAnswerFromIdx(int idx);
|
MDNSAnswer* _getAnswerFromIdx(int idx);
|
||||||
|
int _getNumAnswers();
|
||||||
};
|
};
|
||||||
|
|
||||||
extern MDNSResponder MDNS;
|
extern MDNSResponder MDNS;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user