diff --git a/components/mdns/mdns.c b/components/mdns/mdns.c index 903cc02b4c..b089a1f305 100644 --- a/components/mdns/mdns.c +++ b/components/mdns/mdns.c @@ -5465,7 +5465,7 @@ static esp_err_t _mdns_stop_timer(void) static esp_err_t _mdns_service_task_start(void) { if (!_mdns_service_semaphore) { - _mdns_service_semaphore = xSemaphoreCreateMutex(); + _mdns_service_semaphore = xSemaphoreCreateRecursiveMutex(); if (!_mdns_service_semaphore) { return ESP_FAIL; } diff --git a/components/mdns/private_include/mdns_private.h b/components/mdns/private_include/mdns_private.h index ce4c96b631..4424416322 100644 --- a/components/mdns/private_include/mdns_private.h +++ b/components/mdns/private_include/mdns_private.h @@ -126,8 +126,8 @@ #define MDNS_TIMER_PERIOD_US (CONFIG_MDNS_TIMER_PERIOD_MS*1000) -#define MDNS_SERVICE_LOCK() xSemaphoreTake(_mdns_service_semaphore, portMAX_DELAY) -#define MDNS_SERVICE_UNLOCK() xSemaphoreGive(_mdns_service_semaphore) +#define MDNS_SERVICE_LOCK() xSemaphoreTakeRecursive(_mdns_service_semaphore, portMAX_DELAY) +#define MDNS_SERVICE_UNLOCK() xSemaphoreGiveRecursive(_mdns_service_semaphore) #define queueToEnd(type, queue, item) \ if (!queue) { \