@@ -470,8 +470,8 @@ void MDNSResponder::_parsePacket(){
470
470
}
471
471
472
472
int numAnswers = packetHeader[3 ];
473
- // Assume that the PTR answer always comes first and that it is always accompanied by a TXT, SRV and A answer in the same packet.
474
- if (numAnswers != 4 ) {
473
+ // Assume that the PTR answer always comes first and that it is always accompanied by a TXT, SRV, AAAA (optional) and A answer in the same packet.
474
+ if (numAnswers < 4 ) {
475
475
#ifdef MDNS_DEBUG_RX
476
476
Serial.println (" Expected a packet with 4 answers, returning" );
477
477
#endif
@@ -550,7 +550,7 @@ void MDNSResponder::_parsePacket(){
550
550
#endif
551
551
}
552
552
553
- if (answerType == MDNS_TYPE_TXT) {
553
+ else if (answerType == MDNS_TYPE_TXT) {
554
554
partsCollected |= 0x02 ;
555
555
_conn_readS (hostName, answerRdlength); // Read rdata
556
556
#ifdef MDNS_DEBUG_RX
@@ -561,7 +561,7 @@ void MDNSResponder::_parsePacket(){
561
561
#endif
562
562
}
563
563
564
- if (answerType == MDNS_TYPE_SRV) {
564
+ else if (answerType == MDNS_TYPE_SRV) {
565
565
partsCollected |= 0x04 ;
566
566
uint16_t answerPrio = _conn_read16 (); // Read priority
567
567
uint16_t answerWeight = _conn_read16 (); // Read weight
@@ -589,12 +589,19 @@ void MDNSResponder::_parsePacket(){
589
589
}
590
590
}
591
591
592
- if (answerType == MDNS_TYPE_A) {
592
+ else if (answerType == MDNS_TYPE_A) {
593
593
partsCollected |= 0x08 ;
594
594
for (int i = 0 ; i < 4 ; i++) {
595
595
answerIp[i] = _conn_read8 ();
596
596
}
597
597
}
598
+ else {
599
+ #ifdef MDNS_DEBUG_RX
600
+ Serial.printf (" Ignoring unsupported type %d\n " , tmp8);
601
+ #endif
602
+ for (int n = 0 ; n < answerRdlength; n++)
603
+ (void )_conn_read8 ();
604
+ }
598
605
599
606
if ((partsCollected == 0x0F ) && serviceMatch) {
600
607
#ifdef MDNS_DEBUG_RX
0 commit comments