Procházet zdrojové kódy

mdns: Fix include query ID in reponses

Closes https://github.com/espressif/esp-idf/issues/5574
David Cermak před 5 roky
rodič
revize
faef936581

+ 3 - 0
components/mdns/mdns.c

@@ -980,6 +980,7 @@ static void _mdns_dispatch_tx_packet(mdns_tx_packet_t * p)
     uint8_t count;
 
     _mdns_set_u16(packet, MDNS_HEAD_FLAGS_OFFSET, p->flags);
+    _mdns_set_u16(packet, MDNS_HEAD_ID_OFFSET, p->id);
 
     count = 0;
     q = p->questions;
@@ -1259,6 +1260,7 @@ static void _mdns_create_answer_from_parsed_packet(mdns_parsed_packet_t * parsed
     }
     packet->flags = MDNS_FLAGS_AUTHORITATIVE;
     packet->distributed = parsed_packet->distributed;
+    packet->id = parsed_packet->id;
 
     mdns_parsed_question_t * q = parsed_packet->questions;
     while (q) {
@@ -2662,6 +2664,7 @@ void mdns_parse_packet(mdns_rx_packet_t * packet)
     parsed_packet->multicast = packet->multicast;
     parsed_packet->authoritative = header.flags.value == MDNS_FLAGS_AUTHORITATIVE;
     parsed_packet->distributed = header.flags.value == MDNS_FLAGS_DISTRIBUTED;
+    parsed_packet->id = header.id;
     ip_addr_copy(parsed_packet->src, packet->src);
     parsed_packet->src_port = packet->src_port;
 

+ 2 - 0
components/mdns/private_include/mdns_private.h

@@ -236,6 +236,7 @@ typedef struct {
     uint8_t distributed;
     mdns_parsed_question_t * questions;
     mdns_parsed_record_t * records;
+    uint16_t id;
 } mdns_parsed_packet_t;
 
 typedef struct {
@@ -304,6 +305,7 @@ typedef struct mdns_tx_packet_s {
     mdns_out_answer_t * servers;
     mdns_out_answer_t * additional;
     bool queued;
+    uint16_t id;
 } mdns_tx_packet_t;
 
 typedef struct {