diff --git a/components/mdns/mdns.c b/components/mdns/mdns.c index 83e9be71a..f04d4d192 100644 --- a/components/mdns/mdns.c +++ b/components/mdns/mdns.c @@ -4301,6 +4301,14 @@ void mdns_free(void) if (!_mdns_server) { return; } + + // Unregister handlers before destoying the mdns internals to avoid receiving asyc events while deinit + esp_event_handler_unregister(WIFI_EVENT, ESP_EVENT_ANY_ID, &event_handler); + esp_event_handler_unregister(IP_EVENT, ESP_EVENT_ANY_ID, &event_handler); +#if CONFIG_ETH_ENABLED + esp_event_handler_unregister(ETH_EVENT, ESP_EVENT_ANY_ID, &event_handler); +#endif + mdns_service_remove_all(); _mdns_service_task_stop(); for (i=0; ilock); - esp_event_handler_unregister(WIFI_EVENT, ESP_EVENT_ANY_ID, &event_handler); - esp_event_handler_unregister(IP_EVENT, ESP_EVENT_ANY_ID, &event_handler); -#if CONFIG_ETH_ENABLED - esp_event_handler_unregister(ETH_EVENT, ESP_EVENT_ANY_ID, &event_handler); -#endif free(_mdns_server); _mdns_server = NULL; }