From 358d26c8a1415908aeef641263a75b6f95b61906 Mon Sep 17 00:00:00 2001 From: David Cermak Date: Fri, 25 Jan 2019 16:17:07 +0100 Subject: [PATCH] mdns: fix crash after init if no memory for task mdns init first starts timer task, then starts service task. if service task failed to be created, timer task needs to be stopped too. fixed https://ezredmine.espressif.cn:8765/issues/28466 * Original commit: espressif/esp-idf@a47768dc4e4750fd7e1c29b15d6e2dd3c76e6591 --- components/mdns/mdns.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/components/mdns/mdns.c b/components/mdns/mdns.c index c77c9443f..1626ffaeb 100644 --- a/components/mdns/mdns.c +++ b/components/mdns/mdns.c @@ -3993,7 +3993,10 @@ static esp_err_t _mdns_service_task_start() if (!_mdns_service_task_handle) { xTaskCreatePinnedToCore(_mdns_service_task, "mdns", MDNS_SERVICE_STACK_DEPTH, NULL, 1, (TaskHandle_t * const)(&_mdns_service_task_handle), 0); if (!_mdns_service_task_handle) { + _mdns_stop_timer(); MDNS_SERVICE_UNLOCK(); + vSemaphoreDelete(_mdns_service_semaphore); + _mdns_service_semaphore = NULL; return ESP_FAIL; } } @@ -4012,6 +4015,8 @@ static esp_err_t _mdns_service_task_stop() MDNS_SERVICE_LOCK(); _mdns_stop_timer(); MDNS_SERVICE_UNLOCK(); + vSemaphoreDelete(_mdns_service_semaphore); + _mdns_service_semaphore = NULL; if (_mdns_service_task_handle) { mdns_action_t action; mdns_action_t * a = &action;