mdns: fix possible deadlock on mdns deinit calling mdns_free()

mnds_free() initiates stop and delete timer tasks, which after locking the mutex could lead to a dead lock in case timer task executed before deleting the task, as it would wait indefinitelly for unlocking the mutex. This condition is fixed by calling _mdns_stop_timer without locking the mutex, because there's no need to protect any data when stopping and deleting the timer task

Closes https://github.com/espressif/esp-idf/issues/1696
This commit is contained in:
David Cermak 2019-03-04 11:13:52 +01:00
parent 0e06b4d653
commit 8e4ec90dc4

View file

@ -4040,9 +4040,7 @@ static esp_err_t _mdns_service_task_start()
*/
static esp_err_t _mdns_service_task_stop()
{
MDNS_SERVICE_LOCK();
_mdns_stop_timer();
MDNS_SERVICE_UNLOCK();
if (_mdns_service_task_handle) {
mdns_action_t action;
mdns_action_t * a = &action;