Jelajahi Sumber

Merge branch 'bugfix/mdns_one_shot_multicast_v4.3' into 'release/v4.3'

mdns: Support for One-Shot mDNS queries (v4.3)

See merge request espressif/esp-idf!14130
David Čermák 4 tahun lalu
induk
melakukan
3a588d7d19
1 mengubah file dengan 10 tambahan dan 8 penghapusan
  1. 10 8
      components/mdns/mdns.c

+ 10 - 8
components/mdns/mdns.c

@@ -1335,15 +1335,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);