From 1f263434a6db9359a9ffd11f590ff2476fb03c46 Mon Sep 17 00:00:00 2001 From: David Cermak Date: Mon, 9 Dec 2019 11:29:19 +0100 Subject: [PATCH] mdns: fixed crash on event during deinit mdns library deinitialization destroys internal structures including action queue. if an event (e.g. network update) received after some essential stucture is destoyed, an unexpected behavour might be introduced (e.g. crash of adding the event notification to the action queue which was already destroyed Closes WIFI-1485 --- components/mdns/mdns.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/components/mdns/mdns.c b/components/mdns/mdns.c index 6ce73c24c..92875a0a7 100644 --- a/components/mdns/mdns.c +++ b/components/mdns/mdns.c @@ -4249,6 +4249,11 @@ void mdns_free() if (!_mdns_server) { return; } + + esp_event_handler_unregister(WIFI_EVENT, ESP_EVENT_ANY_ID, &event_handler); + esp_event_handler_unregister(IP_EVENT, ESP_EVENT_ANY_ID, &event_handler); + esp_event_handler_unregister(ETH_EVENT, ESP_EVENT_ANY_ID, &event_handler); + mdns_service_remove_all(_mdns_server); _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); - esp_event_handler_unregister(ETH_EVENT, ESP_EVENT_ANY_ID, &event_handler); free(_mdns_server); _mdns_server = NULL; }