From 78f71ecdf686dfae1f23c046526bf2d9ed234865 Mon Sep 17 00:00:00 2001 From: David Cermak Date: Mon, 27 Jul 2020 07:14:34 +0200 Subject: [PATCH] mdns: Fix include query ID in reponses Closes https://github.com/espressif/esp-idf/issues/5574 * Original commit: espressif/esp-idf@f62e321d87c1d520cccca951715c27730e06607a --- components/mdns/mdns.c | 3 +++ components/mdns/private_include/mdns_private.h | 2 ++ 2 files changed, 5 insertions(+) diff --git a/components/mdns/mdns.c b/components/mdns/mdns.c index 711de2a45..750456c7e 100644 --- a/components/mdns/mdns.c +++ b/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; diff --git a/components/mdns/private_include/mdns_private.h b/components/mdns/private_include/mdns_private.h index 535c25f6b..f14619f06 100644 --- a/components/mdns/private_include/mdns_private.h +++ b/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 {