@@ -4783,7 +4783,7 @@ static void _mdns_execute_action(mdns_action_t *action)
4783
4783
_mdns_server -> hostname = action -> data .hostname_set .hostname ;
4784
4784
_mdns_self_host .hostname = action -> data .hostname_set .hostname ;
4785
4785
_mdns_restart_all_pcbs ();
4786
- xTaskNotifyGive ( action -> data . hostname_set . calling_task );
4786
+ xSemaphoreGive ( _mdns_server -> action_sema );
4787
4787
break ;
4788
4788
case ACTION_INSTANCE_SET :
4789
4789
_mdns_send_bye_all_pcbs_no_instance (false);
@@ -5326,6 +5326,12 @@ esp_err_t mdns_init(void)
5326
5326
goto free_lock ;
5327
5327
}
5328
5328
5329
+ _mdns_server -> action_sema = xSemaphoreCreateBinary ();
5330
+ if (!_mdns_server -> action_sema ) {
5331
+ err = ESP_ERR_NO_MEM ;
5332
+ goto free_queue ;
5333
+ }
5334
+
5329
5335
#if CONFIG_MDNS_PREDEF_NETIF_STA || CONFIG_MDNS_PREDEF_NETIF_AP
5330
5336
if ((err = esp_event_handler_register (WIFI_EVENT , ESP_EVENT_ANY_ID , mdns_preset_if_handle_system_event , NULL )) != ESP_OK ) {
5331
5337
goto free_event_handlers ;
@@ -5381,6 +5387,8 @@ esp_err_t mdns_init(void)
5381
5387
free_event_handlers :
5382
5388
unregister_predefined_handlers ();
5383
5389
#endif
5390
+ vSemaphoreDelete (_mdns_server -> action_sema );
5391
+ free_queue :
5384
5392
vQueueDelete (_mdns_server -> action_queue );
5385
5393
free_lock :
5386
5394
vSemaphoreDelete (_mdns_server -> lock );
@@ -5430,6 +5438,7 @@ void mdns_free(void)
5430
5438
}
5431
5439
free (h );
5432
5440
}
5441
+ vSemaphoreDelete (_mdns_server -> action_sema );
5433
5442
vSemaphoreDelete (_mdns_server -> lock );
5434
5443
free (_mdns_server );
5435
5444
_mdns_server = NULL ;
@@ -5456,13 +5465,12 @@ esp_err_t mdns_hostname_set(const char *hostname)
5456
5465
}
5457
5466
action -> type = ACTION_HOSTNAME_SET ;
5458
5467
action -> data .hostname_set .hostname = new_hostname ;
5459
- action -> data .hostname_set .calling_task = xTaskGetCurrentTaskHandle ();
5460
5468
if (xQueueSend (_mdns_server -> action_queue , & action , (TickType_t )0 ) != pdPASS ) {
5461
5469
free (new_hostname );
5462
5470
free (action );
5463
5471
return ESP_ERR_NO_MEM ;
5464
5472
}
5465
- xTaskNotifyWait ( 0 , 0x01 , NULL , portMAX_DELAY );
5473
+ xSemaphoreTake ( _mdns_server -> action_sema , portMAX_DELAY );
5466
5474
return ESP_OK ;
5467
5475
}
5468
5476
0 commit comments