From df752f4c460008157e5fba958bc7f38d4b52fd8a Mon Sep 17 00:00:00 2001 From: David Cermak Date: Thu, 10 Jun 2021 15:00:33 +0200 Subject: [PATCH] mdns: Support for One-Shot mDNS queries --- components/mdns/mdns.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/components/mdns/mdns.c b/components/mdns/mdns.c index 1436072abe..ff3e049391 100644 --- a/components/mdns/mdns.c +++ b/components/mdns/mdns.c @@ -1314,15 +1314,17 @@ static void _mdns_create_answer_from_parsed_packet(mdns_parsed_packet_t * parsed return; } #ifdef MDNS_REPEAT_QUERY_IN_RESPONSE - mdns_out_question_t * out_question = malloc(sizeof(mdns_out_question_t)); - if (out_question == NULL) { - HOOK_MALLOC_FAILED; - _mdns_free_tx_packet(packet); - return; + if (parsed_packet->src_port != MDNS_SERVICE_PORT) { + mdns_out_question_t * out_question = malloc(sizeof(mdns_out_question_t)); + if (out_question == NULL) { + HOOK_MALLOC_FAILED; + _mdns_free_tx_packet(packet); + return; + } + memcpy(out_question, q, sizeof(mdns_out_question_t)); + out_question->next = NULL; + queueToEnd(mdns_out_question_t, packet->questions, out_question); } - memcpy(out_question, q, sizeof(mdns_out_question_t)); - out_question->next = NULL; - queueToEnd(mdns_out_question_t, packet->questions, out_question); #endif // MDNS_REPEAT_QUERY_IN_RESPONSE } else if (!_mdns_alloc_answer(&packet->answers, q->type, NULL, send_flush, false)) { _mdns_free_tx_packet(packet);