diff --git a/components/mdns/mdns.c b/components/mdns/mdns.c index 71a1db14a1..1aa8fbe1c6 100644 --- a/components/mdns/mdns.c +++ b/components/mdns/mdns.c @@ -1325,15 +1325,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);