Merge branch 'bugfix/mdns_deinit_event_crash' into 'master'

mdns: fixed crash on event during deinit

Closes WIFI-1485

See merge request espressif/esp-idf!6951
This commit is contained in:
Ivan Grokhotkov
2019-12-19 15:42:05 +08:00

View File

@@ -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; i<MDNS_IF_MAX; i++) {
@@ -4331,11 +4339,6 @@ void mdns_free(void)
free(h);
}
vSemaphoreDelete(_mdns_server->lock);
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;
}