mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 22:53:59 +00:00 
			
		
		
		
	[wifi] Fix reconnection failures after adapter restart by not clearing netif pointers (#10458)
This commit is contained in:
		| @@ -547,8 +547,6 @@ void WiFiComponent::wifi_event_callback_(esphome_wifi_event_id_t event, esphome_ | |||||||
|     } |     } | ||||||
|     case ESPHOME_EVENT_ID_WIFI_STA_STOP: { |     case ESPHOME_EVENT_ID_WIFI_STA_STOP: { | ||||||
|       ESP_LOGV(TAG, "STA stop"); |       ESP_LOGV(TAG, "STA stop"); | ||||||
|       // Clear the STA interface handle to prevent use-after-free |  | ||||||
|       s_sta_netif = nullptr; |  | ||||||
|       break; |       break; | ||||||
|     } |     } | ||||||
|     case ESPHOME_EVENT_ID_WIFI_STA_CONNECTED: { |     case ESPHOME_EVENT_ID_WIFI_STA_CONNECTED: { | ||||||
| @@ -638,10 +636,6 @@ void WiFiComponent::wifi_event_callback_(esphome_wifi_event_id_t event, esphome_ | |||||||
|     } |     } | ||||||
|     case ESPHOME_EVENT_ID_WIFI_AP_STOP: { |     case ESPHOME_EVENT_ID_WIFI_AP_STOP: { | ||||||
|       ESP_LOGV(TAG, "AP stop"); |       ESP_LOGV(TAG, "AP stop"); | ||||||
| #ifdef USE_WIFI_AP |  | ||||||
|       // Clear the AP interface handle to prevent use-after-free |  | ||||||
|       s_ap_netif = nullptr; |  | ||||||
| #endif |  | ||||||
|       break; |       break; | ||||||
|     } |     } | ||||||
|     case ESPHOME_EVENT_ID_WIFI_AP_STACONNECTED: { |     case ESPHOME_EVENT_ID_WIFI_AP_STACONNECTED: { | ||||||
|   | |||||||
| @@ -697,8 +697,6 @@ void WiFiComponent::wifi_process_event_(IDFWiFiEvent *data) { | |||||||
|   } else if (data->event_base == WIFI_EVENT && data->event_id == WIFI_EVENT_STA_STOP) { |   } else if (data->event_base == WIFI_EVENT && data->event_id == WIFI_EVENT_STA_STOP) { | ||||||
|     ESP_LOGV(TAG, "STA stop"); |     ESP_LOGV(TAG, "STA stop"); | ||||||
|     s_sta_started = false; |     s_sta_started = false; | ||||||
|     // Clear the STA interface handle to prevent use-after-free |  | ||||||
|     s_sta_netif = nullptr; |  | ||||||
|  |  | ||||||
|   } else if (data->event_base == WIFI_EVENT && data->event_id == WIFI_EVENT_STA_AUTHMODE_CHANGE) { |   } else if (data->event_base == WIFI_EVENT && data->event_id == WIFI_EVENT_STA_AUTHMODE_CHANGE) { | ||||||
|     const auto &it = data->data.sta_authmode_change; |     const auto &it = data->data.sta_authmode_change; | ||||||
| @@ -797,10 +795,6 @@ void WiFiComponent::wifi_process_event_(IDFWiFiEvent *data) { | |||||||
|   } else if (data->event_base == WIFI_EVENT && data->event_id == WIFI_EVENT_AP_STOP) { |   } else if (data->event_base == WIFI_EVENT && data->event_id == WIFI_EVENT_AP_STOP) { | ||||||
|     ESP_LOGV(TAG, "AP stop"); |     ESP_LOGV(TAG, "AP stop"); | ||||||
|     s_ap_started = false; |     s_ap_started = false; | ||||||
| #ifdef USE_WIFI_AP |  | ||||||
|     // Clear the AP interface handle to prevent use-after-free |  | ||||||
|     s_ap_netif = nullptr; |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|   } else if (data->event_base == WIFI_EVENT && data->event_id == WIFI_EVENT_AP_PROBEREQRECVED) { |   } else if (data->event_base == WIFI_EVENT && data->event_id == WIFI_EVENT_AP_PROBEREQRECVED) { | ||||||
|     const auto &it = data->data.ap_probe_req_rx; |     const auto &it = data->data.ap_probe_req_rx; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user