From 714188cfd87e01a57281a7b911cdcd7ea587996c Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Tue, 13 Jan 2026 08:13:37 -1000 Subject: [PATCH] [wifi] Fix ESP8266 disconnect callback order to set error flag before notifying listeners --- esphome/components/wifi/wifi_component_esp8266.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/esphome/components/wifi/wifi_component_esp8266.cpp b/esphome/components/wifi/wifi_component_esp8266.cpp index b7d820413c..a68111f045 100644 --- a/esphome/components/wifi/wifi_component_esp8266.cpp +++ b/esphome/components/wifi/wifi_component_esp8266.cpp @@ -543,6 +543,9 @@ void WiFiComponent::wifi_event_callback(System_Event_t *event) { } s_sta_connected = false; s_sta_connecting = false; + // Set error flag BEFORE notifying listeners so is_connected() returns + // correct state during listener callbacks (matches ESP-IDF behavior) + global_wifi_component->error_from_callback_ = true; #ifdef USE_WIFI_LISTENERS static constexpr uint8_t EMPTY_BSSID[6] = {}; for (auto *listener : global_wifi_component->connect_state_listeners_) { @@ -635,10 +638,6 @@ void WiFiComponent::wifi_event_callback(System_Event_t *event) { break; } - if (event->event == EVENT_STAMODE_DISCONNECTED) { - global_wifi_component->error_from_callback_ = true; - } - WiFiMockClass::_event_callback(event); }