diff --git a/.github/workflows/mdns__build-target-test.yml b/.github/workflows/mdns__build-target-test.yml index e6da77ec9b..2eb106273d 100644 --- a/.github/workflows/mdns__build-target-test.yml +++ b/.github/workflows/mdns__build-target-test.yml @@ -32,6 +32,10 @@ jobs: python -m pip install idf-build-apps # Build default configs for all targets python ./ci/build_apps.py components/mdns/${{ matrix.test.path }} -r default -d + # Build-only configs (compile check; discard artifacts so pytest won't run them) + if compgen -G "components/mdns/${{ matrix.test.path }}/sdkconfig.build_only.*" > /dev/null; then + python ./ci/build_apps.py components/mdns/${{ matrix.test.path }} -r 'sdkconfig.build_only.*=' -d + fi # Build specific configs for test targets python ./ci/build_apps.py components/mdns/${{ matrix.test.path }} cd components/mdns/${{ matrix.test.path }} diff --git a/components/mdns/CMakeLists.txt b/components/mdns/CMakeLists.txt index 12bbfb3489..11254a3a01 100644 --- a/components/mdns/CMakeLists.txt +++ b/components/mdns/CMakeLists.txt @@ -12,7 +12,13 @@ endif() set(MDNS_MEMORY "mdns_mem_caps.c") -set(MDNS_CORE "mdns_responder.c" "mdns_receive.c" "mdns_utils.c" "mdns_debug.c" "mdns_browser.c" "mdns_send.c" "mdns_netif.c" +if(CONFIG_MDNS_ENABLE_BROWSE) + set(MDNS_BROWSER "mdns_browser.c") +else() + set(MDNS_BROWSER "") +endif() + +set(MDNS_CORE "mdns_responder.c" "mdns_receive.c" "mdns_utils.c" "mdns_debug.c" ${MDNS_BROWSER} "mdns_send.c" "mdns_netif.c" "mdns_querier.c" "mdns_pcb.c" "mdns_service.c") idf_build_get_property(target IDF_TARGET) diff --git a/components/mdns/Kconfig b/components/mdns/Kconfig index bde726d1b7..9f531dc550 100644 --- a/components/mdns/Kconfig +++ b/components/mdns/Kconfig @@ -162,6 +162,14 @@ menu "mDNS" help Enable for the console cli to be available on the device. + config MDNS_ENABLE_BROWSE + bool "Enable mDNS browse (daemon service discovery)" + default y + help + Enable continuous browse APIs (mdns_browse_new / mdns_browse_delete) + and the related receive/send paths. Disable to save ~3–4 KB of flash + when the application only advertises services or uses one-shot queries. + config MDNS_RESPOND_REVERSE_QUERIES bool "Enable responding to IPv4 reverse queries" default n diff --git a/components/mdns/examples/query_advertise/sdkconfig.build_only.no_browse b/components/mdns/examples/query_advertise/sdkconfig.build_only.no_browse new file mode 100644 index 0000000000..d6aedd524d --- /dev/null +++ b/components/mdns/examples/query_advertise/sdkconfig.build_only.no_browse @@ -0,0 +1,16 @@ +CONFIG_IDF_TARGET="esp32" +CONFIG_MDNS_ENABLE_BROWSE=n +CONFIG_MDNS_RESOLVE_TEST_SERVICES=y +CONFIG_MDNS_ADD_MAC_TO_HOSTNAME=y +CONFIG_MDNS_PUBLISH_DELEGATE_HOST=y +CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y +CONFIG_EXAMPLE_CONNECT_ETHERNET=y +CONFIG_EXAMPLE_CONNECT_WIFI=n +CONFIG_EXAMPLE_USE_INTERNAL_ETHERNET=y +CONFIG_EXAMPLE_ETH_PHY_IP101=y +CONFIG_EXAMPLE_ETH_MDC_GPIO=23 +CONFIG_EXAMPLE_ETH_MDIO_GPIO=18 +CONFIG_EXAMPLE_ETH_PHY_RST_GPIO=5 +CONFIG_EXAMPLE_ETH_PHY_ADDR=1 +CONFIG_EXAMPLE_CONNECT_IPV6=y +CONFIG_MDNS_BUTTON_GPIO=32 diff --git a/components/mdns/include/mdns.h b/components/mdns/include/mdns.h index edabaa8975..ef89ea1a07 100644 --- a/components/mdns/include/mdns.h +++ b/components/mdns/include/mdns.h @@ -1043,6 +1043,7 @@ esp_err_t mdns_unregister_netif(esp_netif_t *esp_netif); */ esp_err_t mdns_netif_action(esp_netif_t *esp_netif, mdns_event_actions_t event_action); +#ifdef CONFIG_MDNS_ENABLE_BROWSE /** * @brief Browse mDNS for a service `_service._proto`. * @@ -1063,6 +1064,8 @@ esp_err_t mdns_netif_action(esp_netif_t *esp_netif, mdns_event_actions_t event_a * @note If one response packet contains answers for multiple active browses, * only one browse is synchronized for that packet. This should not affect * typical browse traffic, where packets answer one service type. + * + * @note Requires CONFIG_MDNS_ENABLE_BROWSE=y. */ mdns_browse_t *mdns_browse_new(const char *service, const char *proto, mdns_browse_notify_t notifier); @@ -1074,8 +1077,11 @@ mdns_browse_t *mdns_browse_new(const char *service, const char *proto, mdns_brow * - ESP_OK success. * - ESP_ERR_FAIL mDNS is not running or the browsing of `_service._proto` is never started. * - ESP_ERR_NO_MEM memory error. + * + * @note Requires CONFIG_MDNS_ENABLE_BROWSE=y. */ esp_err_t mdns_browse_delete(const char *service, const char *proto); +#endif /* CONFIG_MDNS_ENABLE_BROWSE */ #ifdef __cplusplus } diff --git a/components/mdns/mdns_console.c b/components/mdns/mdns_console.c index b3448ff927..443f446288 100644 --- a/components/mdns/mdns_console.c +++ b/components/mdns/mdns_console.c @@ -1335,6 +1335,7 @@ static void register_mdns_service_subtype_set(void) ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_service_sub)); } +#ifdef CONFIG_MDNS_ENABLE_BROWSE static struct { struct arg_str *service; struct arg_str *proto; @@ -1413,6 +1414,7 @@ static void register_mdns_browse_del(void) ESP_ERROR_CHECK(esp_console_cmd_register(&cmd_browse_del)); } +#endif /* CONFIG_MDNS_ENABLE_BROWSE */ void mdns_console_register(void) { @@ -1434,8 +1436,10 @@ void mdns_console_register(void) register_mdns_undelegate_host(); register_mdns_service_subtype_set(); +#ifdef CONFIG_MDNS_ENABLE_BROWSE register_mdns_browse(); register_mdns_browse_del(); +#endif #ifdef CONFIG_LWIP_IPV4 register_mdns_query_a(); diff --git a/components/mdns/mdns_netif.c b/components/mdns/mdns_netif.c index cb0975e75b..87bc9a38cc 100644 --- a/components/mdns/mdns_netif.c +++ b/components/mdns/mdns_netif.c @@ -13,7 +13,9 @@ #include "mdns_mem_caps.h" #include "mdns_utils.h" #include "mdns_debug.h" +#ifdef CONFIG_MDNS_ENABLE_BROWSE #include "mdns_browser.h" +#endif #include "mdns_netif.h" #include "mdns_pcb.h" #include "mdns_responder.h" @@ -177,7 +179,7 @@ static esp_err_t post_custom_action(mdns_if_t mdns_if, mdns_event_actions_t even return ESP_OK; } -#if CONFIG_MDNS_PREDEF_NETIF_STA || CONFIG_MDNS_PREDEF_NETIF_AP || CONFIG_MDNS_PREDEF_NETIF_ETH +#if defined(CONFIG_MDNS_ENABLE_BROWSE) && (CONFIG_MDNS_PREDEF_NETIF_STA || CONFIG_MDNS_PREDEF_NETIF_AP || CONFIG_MDNS_PREDEF_NETIF_ETH) static esp_err_t post_browse_send_by_ip_protocol_action(mdns_if_t mdns_if, mdns_ip_protocol_t ip_protocol) { if (!mdns_priv_is_server_init() || mdns_if >= MDNS_MAX_INTERFACES) { @@ -281,12 +283,16 @@ static void handle_system_event_for_preset(void *arg, esp_event_base_t event_bas case IP_EVENT_STA_GOT_IP: post_enable_pcb(MDNS_IF_STA, MDNS_IP_PROTOCOL_V4); post_announce_pcb(MDNS_IF_STA, MDNS_IP_PROTOCOL_V6); +#ifdef CONFIG_MDNS_ENABLE_BROWSE post_browse_send_by_ip_protocol_action(mdns_if_from_preset(MDNS_IF_STA), MDNS_IP_PROTOCOL_V4); +#endif break; #if CONFIG_ETH_ENABLED && CONFIG_MDNS_PREDEF_NETIF_ETH case IP_EVENT_ETH_GOT_IP: post_enable_pcb(MDNS_IF_ETH, MDNS_IP_PROTOCOL_V4); +#ifdef CONFIG_MDNS_ENABLE_BROWSE post_browse_send_by_ip_protocol_action(mdns_if_from_preset(MDNS_IF_ETH), MDNS_IP_PROTOCOL_V4); +#endif break; #endif case IP_EVENT_GOT_IP6: { @@ -297,7 +303,9 @@ static void handle_system_event_for_preset(void *arg, esp_event_base_t event_bas } post_enable_pcb(mdns_if, MDNS_IP_PROTOCOL_V6); post_announce_pcb(mdns_if, MDNS_IP_PROTOCOL_V4); +#ifdef CONFIG_MDNS_ENABLE_BROWSE post_browse_send_by_ip_protocol_action(mdns_if, MDNS_IP_PROTOCOL_V6); +#endif } break; diff --git a/components/mdns/mdns_receive.c b/components/mdns/mdns_receive.c index b35e7bb7d0..cabef14539 100644 --- a/components/mdns/mdns_receive.c +++ b/components/mdns/mdns_receive.c @@ -15,7 +15,9 @@ #include "mdns_debug.h" #include "mdns_netif.h" #include "mdns_send.h" +#ifdef CONFIG_MDNS_ENABLE_BROWSE #include "mdns_browser.h" +#endif #include "mdns_querier.h" #include "mdns_pcb.h" #include "mdns_responder.h" @@ -597,6 +599,7 @@ static void mdns_parse_packet(mdns_rx_packet_t *packet) const uint8_t *content = data + MDNS_HEAD_LEN; bool do_not_reply = false; mdns_search_once_t *search_result = NULL; +#ifdef CONFIG_MDNS_ENABLE_BROWSE mdns_browse_t *browse_result = NULL; /* * Browse packet limitations (see also mdns_browse_new() / mdns_browse_notify_t in mdns.h): @@ -611,6 +614,7 @@ static void mdns_parse_packet(mdns_rx_packet_t *packet) char *browse_result_proto = NULL; mdns_browse_sync_t *out_sync_browse = NULL; mdns_browse_staged_ip_t *staged_browse_ips = NULL; +#endif DBG_RX_PACKET(packet, data, len); @@ -765,7 +769,9 @@ static void mdns_parse_packet(mdns_rx_packet_t *packet) while (content < (data + len)) { search_result = NULL; +#ifdef CONFIG_MDNS_ENABLE_BROWSE browse_result = NULL; +#endif content = mdns_utils_parse_fqdn(data, content, name, len); if (!content) { @@ -817,6 +823,7 @@ static void mdns_parse_packet(mdns_rx_packet_t *packet) continue; } search_result = mdns_priv_query_find(name, type, packet->tcpip_if, packet->ip_protocol); +#ifdef CONFIG_MDNS_ENABLE_BROWSE browse_result = mdns_priv_browse_find(name, type, packet->tcpip_if, packet->ip_protocol); if (browse_result) { packet_browse = browse_result; @@ -853,14 +860,18 @@ static void mdns_parse_packet(mdns_rx_packet_t *packet) memcpy(browse_result_instance, name->host, MDNS_NAME_BUF_LEN); } } +#endif /* CONFIG_MDNS_ENABLE_BROWSE */ } if (type == MDNS_TYPE_PTR) { +#ifdef CONFIG_MDNS_ENABLE_BROWSE mdns_browse_t *browse_for_ptr = mdns_priv_browse_find_ptr(name); +#endif size_t rdata_bound = (size_t)(data_ptr + data_len - data); if (!mdns_utils_parse_fqdn(data, data_ptr, name, rdata_bound)) { continue;//error } +#ifdef CONFIG_MDNS_ENABLE_BROWSE if (browse_for_ptr) { packet_browse = browse_for_ptr; out_sync_browse = mdns_priv_browse_ensure_sync(browse_for_ptr, out_sync_browse); @@ -871,6 +882,9 @@ static void mdns_parse_packet(mdns_rx_packet_t *packet) browse_for_ptr->proto, packet->tcpip_if, packet->ip_protocol, ttl, out_sync_browse); } else if (search_result) { +#else + if (search_result) { +#endif mdns_priv_query_result_add_ptr(search_result, name->host, name->service, name->proto, packet->tcpip_if, packet->ip_protocol, ttl); } else if ((discovery || ours) && !name->sub && is_ours(name)) { @@ -961,6 +975,7 @@ static void mdns_parse_packet(mdns_rx_packet_t *packet) uint16_t weight = mdns_utils_read_u16(data_ptr, MDNS_SRV_WEIGHT_OFFSET); uint16_t port = mdns_utils_read_u16(data_ptr, MDNS_SRV_PORT_OFFSET); +#ifdef CONFIG_MDNS_ENABLE_BROWSE if (browse_result && !mdns_utils_str_null_or_empty(browse_result_instance) && !mdns_utils_str_null_or_empty(browse_result_service) && !mdns_utils_str_null_or_empty(browse_result_proto)) { @@ -970,6 +985,7 @@ static void mdns_parse_packet(mdns_rx_packet_t *packet) ttl, out_sync_browse); } +#endif if (search_result) { if (search_result->type == MDNS_TYPE_PTR) { if (!result->hostname) { // assign host/port for this entry only if not previously set @@ -1041,6 +1057,7 @@ static void mdns_parse_packet(mdns_rx_packet_t *packet) size_t txt_count = 0; mdns_result_t *result = NULL; +#ifdef CONFIG_MDNS_ENABLE_BROWSE if (browse_result && !mdns_utils_str_null_or_empty(browse_result_instance) && !mdns_utils_str_null_or_empty(browse_result_service) && !mdns_utils_str_null_or_empty(browse_result_proto)) { @@ -1051,6 +1068,7 @@ static void mdns_parse_packet(mdns_rx_packet_t *packet) packet->ip_protocol, ttl, out_sync_browse); } +#endif if (search_result) { if (search_result->type == MDNS_TYPE_PTR) { result = search_result->result; @@ -1120,6 +1138,7 @@ static void mdns_parse_packet(mdns_rx_packet_t *packet) esp_ip_addr_t ip6; ip6.type = ESP_IPADDR_TYPE_V6; memcpy(ip6.u_addr.ip6.addr, data_ptr, MDNS_ANSWER_AAAA_SIZE); +#ifdef CONFIG_MDNS_ENABLE_BROWSE if (packet_browse || browse_result) { mdns_browse_t *browse_ip = browse_result ? browse_result : packet_browse; out_sync_browse = mdns_priv_browse_ensure_sync(browse_ip, out_sync_browse); @@ -1128,6 +1147,7 @@ static void mdns_parse_packet(mdns_rx_packet_t *packet) goto clear_rx_packet; } } +#endif if (search_result) { //check for more applicable searches (PTR & A/AAAA at the same time) while (search_result) { @@ -1186,6 +1206,7 @@ static void mdns_parse_packet(mdns_rx_packet_t *packet) esp_ip_addr_t ip; ip.type = ESP_IPADDR_TYPE_V4; memcpy(&(ip.u_addr.ip4.addr), data_ptr, 4); +#ifdef CONFIG_MDNS_ENABLE_BROWSE if (packet_browse || browse_result) { mdns_browse_t *browse_ip = browse_result ? browse_result : packet_browse; out_sync_browse = mdns_priv_browse_ensure_sync(browse_ip, out_sync_browse); @@ -1194,6 +1215,7 @@ static void mdns_parse_packet(mdns_rx_packet_t *packet) goto clear_rx_packet; } } +#endif if (search_result) { //check for more applicable searches (PTR & A/AAAA at the same time) while (search_result) { @@ -1251,6 +1273,7 @@ static void mdns_parse_packet(mdns_rx_packet_t *packet) } } +#ifdef CONFIG_MDNS_ENABLE_BROWSE if (staged_browse_ips) { mdns_browse_t *browse_apply = packet_browse; if (!browse_apply && out_sync_browse) { @@ -1263,10 +1286,12 @@ static void mdns_parse_packet(mdns_rx_packet_t *packet) } mdns_priv_browse_staged_ip_free(staged_browse_ips); staged_browse_ips = NULL; +#endif if (!do_not_reply && mdns_priv_pcb_is_after_probing(packet) && (parsed_packet->questions || parsed_packet->discovery)) { mdns_priv_create_answer_from_parsed_packet(parsed_packet); } +#ifdef CONFIG_MDNS_ENABLE_BROWSE if (out_sync_browse) { DBG_BROWSE_RESULTS_WITH_MSG(out_sync_browse->browse->result, "Browse %s%s total result:", out_sync_browse->browse->service, out_sync_browse->browse->proto); @@ -1279,10 +1304,13 @@ static void mdns_parse_packet(mdns_rx_packet_t *packet) } out_sync_browse = NULL; } +#endif clear_rx_packet: +#ifdef CONFIG_MDNS_ENABLE_BROWSE mdns_priv_browse_staged_ip_free(staged_browse_ips); staged_browse_ips = NULL; +#endif while (parsed_packet->questions) { mdns_parsed_question_t *question = parsed_packet->questions; parsed_packet->questions = parsed_packet->questions->next; @@ -1316,10 +1344,12 @@ static void mdns_parse_packet(mdns_rx_packet_t *packet) mdns_mem_free(record); } mdns_mem_free(parsed_packet); +#ifdef CONFIG_MDNS_ENABLE_BROWSE mdns_mem_free(browse_result_instance); mdns_mem_free(browse_result_service); mdns_mem_free(browse_result_proto); mdns_priv_browse_sync_free(out_sync_browse); +#endif } void mdns_priv_receive_action(mdns_action_t *action, mdns_action_subtype_t type) diff --git a/components/mdns/mdns_service.c b/components/mdns/mdns_service.c index b4af1ef350..7085ab1983 100644 --- a/components/mdns/mdns_service.c +++ b/components/mdns/mdns_service.c @@ -14,7 +14,9 @@ #include "mdns.h" #include "mdns_mem_caps.h" #include "mdns_utils.h" +#ifdef CONFIG_MDNS_ENABLE_BROWSE #include "mdns_browser.h" +#endif #include "mdns_netif.h" #include "mdns_send.h" #include "mdns_receive.h" @@ -31,12 +33,21 @@ #endif #define MDNS_TASK_AFFINITY CONFIG_MDNS_TASK_AFFINITY +/* Classic dynamic create only when the stack must stay internal and FreeRTOS won't place it in SPIRAM. */ +#if !CONFIG_MDNS_TASK_CREATE_FROM_SPIRAM && !CONFIG_FREERTOS_TASK_CREATE_ALLOW_EXT_MEM +#define MDNS_TASK_USE_SIMPLE_CREATE 1 +#else +#define MDNS_TASK_USE_SIMPLE_CREATE 0 +#endif + #define MDNS_SERVICE_LOCK() xSemaphoreTake(s_service_semaphore, portMAX_DELAY) #define MDNS_SERVICE_UNLOCK() xSemaphoreGive(s_service_semaphore) static volatile TaskHandle_t s_service_task_handle = NULL; static SemaphoreHandle_t s_service_semaphore = NULL; +#if !MDNS_TASK_USE_SIMPLE_CREATE static StackType_t *s_stack_buffer; +#endif static QueueHandle_t s_action_queue; static esp_timer_handle_t s_timer_handle; @@ -131,11 +142,13 @@ static void free_action(mdns_action_t *action) case ACTION_SEARCH_END: mdns_priv_query_action(action, ACTION_CLEANUP); break; +#ifdef CONFIG_MDNS_ENABLE_BROWSE case ACTION_BROWSE_ADD: case ACTION_BROWSE_END: case ACTION_BROWSE_SYNC: mdns_priv_browse_action(action, ACTION_CLEANUP); break; +#endif case ACTION_TX_HANDLE: mdns_priv_send_action(action, ACTION_CLEANUP); break; @@ -169,11 +182,13 @@ static void execute_action(mdns_action_t *action) case ACTION_SEARCH_END: mdns_priv_query_action(action, ACTION_RUN); break; +#ifdef CONFIG_MDNS_ENABLE_BROWSE case ACTION_BROWSE_ADD: case ACTION_BROWSE_SYNC: case ACTION_BROWSE_END: mdns_priv_browse_action(action, ACTION_RUN); break; +#endif case ACTION_TX_HANDLE: mdns_priv_send_action(action, ACTION_RUN); @@ -188,9 +203,11 @@ static void execute_action(mdns_action_t *action) case ACTION_DELEGATE_HOSTNAME_REMOVE: mdns_priv_responder_action(action, ACTION_RUN); break; +#ifdef CONFIG_MDNS_ENABLE_BROWSE case ACTION_BROWSE_SEND_BY_IP_PROTOCOL: mdns_priv_browse_send_by_ip_protocol(action->data.browse_send.interface, action->data.browse_send.ip_protocol); break; +#endif default: break; } @@ -259,12 +276,20 @@ static esp_err_t stop_timer(void) static esp_err_t create_task_with_caps(void) { esp_err_t ret = ESP_OK; + +#if MDNS_TASK_USE_SIMPLE_CREATE + BaseType_t res = xTaskCreatePinnedToCore(service_task, "mdns", MDNS_SERVICE_STACK_DEPTH, NULL, MDNS_TASK_PRIORITY, + (TaskHandle_t *)&s_service_task_handle, MDNS_TASK_AFFINITY); + ESP_RETURN_ON_FALSE(res == pdPASS && s_service_task_handle != NULL, ESP_FAIL, TAG, "failed to create task for the mDNS"); + return ret; +#else static StaticTask_t mdns_task_buffer; s_stack_buffer = mdns_mem_task_malloc(MDNS_SERVICE_STACK_DEPTH); ESP_GOTO_ON_FALSE(s_stack_buffer != NULL, ESP_FAIL, alloc_failed, TAG, "failed to allocate memory for the mDNS task's stack"); - s_service_task_handle = xTaskCreateStaticPinnedToCore(service_task, "mdns", MDNS_SERVICE_STACK_DEPTH, NULL, MDNS_TASK_PRIORITY, s_stack_buffer, &mdns_task_buffer, MDNS_TASK_AFFINITY); + s_service_task_handle = xTaskCreateStaticPinnedToCore(service_task, "mdns", MDNS_SERVICE_STACK_DEPTH, NULL, MDNS_TASK_PRIORITY, + s_stack_buffer, &mdns_task_buffer, MDNS_TASK_AFFINITY); ESP_GOTO_ON_FALSE(s_service_task_handle != NULL, ESP_FAIL, err, TAG, "failed to create task for the mDNS"); return ret; @@ -274,6 +299,7 @@ static esp_err_t create_task_with_caps(void) err: mdns_mem_task_free(s_stack_buffer); return ret; +#endif } /** @@ -295,12 +321,12 @@ static esp_err_t service_task_start(void) if (!s_service_task_handle) { ESP_GOTO_ON_ERROR(create_task_with_caps(), err_stop_timer, TAG, "Failed to start the mDNS service task"); -#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 1, 0) && !CONFIG_IDF_TARGET_LINUX +#if !MDNS_TASK_USE_SIMPLE_CREATE && ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 1, 0) && !CONFIG_IDF_TARGET_LINUX StackType_t *mdns_debug_stack_buffer; StaticTask_t *mdns_debug_task_buffer; xTaskGetStaticBuffers(s_service_task_handle, &mdns_debug_stack_buffer, &mdns_debug_task_buffer); ESP_LOGD(TAG, "mdns_debug_stack_buffer:%p mdns_debug_task_buffer:%p\n", mdns_debug_stack_buffer, mdns_debug_task_buffer); -#endif // CONFIG_IDF_TARGET_LINUX +#endif } MDNS_SERVICE_UNLOCK(); return ret; @@ -402,8 +428,9 @@ void mdns_free(void) mdns_service_remove_all(); service_task_stop(); - // at this point, the service task is deleted, so we can destroy the stack size +#if !MDNS_TASK_USE_SIMPLE_CREATE mdns_mem_task_free(s_stack_buffer); +#endif mdns_priv_pcb_deinit(); if (s_action_queue) { mdns_action_t *c; @@ -414,7 +441,9 @@ void mdns_free(void) } mdns_priv_clear_tx_queue(); mdns_priv_query_free(); +#ifdef CONFIG_MDNS_ENABLE_BROWSE mdns_priv_browse_free(); +#endif mdns_priv_responder_free(); } diff --git a/components/mdns/tests/host_unit_test/stubs/sdkconfig.h b/components/mdns/tests/host_unit_test/stubs/sdkconfig.h index 2e7649f23d..9fab009e6a 100644 --- a/components/mdns/tests/host_unit_test/stubs/sdkconfig.h +++ b/components/mdns/tests/host_unit_test/stubs/sdkconfig.h @@ -767,6 +767,7 @@ #define CONFIG_MDNS_SERVICE_ADD_TIMEOUT_MS 2000 #define CONFIG_MDNS_TIMER_PERIOD_MS 100 #define CONFIG_MDNS_ENABLE_CONSOLE_CLI 1 +#define CONFIG_MDNS_ENABLE_BROWSE 1 #define CONFIG_MDNS_MULTIPLE_INSTANCE 1 /* List of deprecated options */