mirror of
https://github.com/esphome/esphome.git
synced 2026-06-24 14:19:03 +00:00
[wifi] Fix stale wifi.connected after state transition (#15966)
This commit is contained in:
committed by
Jesse Hills
parent
6a5919ee87
commit
4137d93cbf
@@ -1570,6 +1570,8 @@ void WiFiComponent::check_connecting_finished(uint32_t now) {
|
||||
#endif
|
||||
|
||||
this->state_ = WIFI_COMPONENT_STATE_STA_CONNECTED;
|
||||
// Refresh is_connected() cache; loop()'s refresh ran before this transition.
|
||||
this->update_connected_state_();
|
||||
this->num_retried_ = 0;
|
||||
this->print_connect_params_();
|
||||
|
||||
|
||||
@@ -948,6 +948,8 @@ void WiFiComponent::process_pending_callbacks_() {
|
||||
#ifdef USE_WIFI_CONNECT_STATE_LISTENERS
|
||||
if (this->pending_.disconnect) {
|
||||
this->pending_.disconnect = false;
|
||||
// Refresh is_connected() cache here, not in the SDK callback (sys context).
|
||||
this->update_connected_state_();
|
||||
this->notify_disconnect_state_listeners_();
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -796,6 +796,8 @@ void WiFiComponent::wifi_process_event_(IDFWiFiEvent *data) {
|
||||
s_sta_connected = false;
|
||||
s_sta_connecting = false;
|
||||
error_from_callback_ = true;
|
||||
// Refresh is_connected() cache; error_from_callback_ makes it false.
|
||||
this->update_connected_state_();
|
||||
#ifdef USE_WIFI_CONNECT_STATE_LISTENERS
|
||||
this->notify_disconnect_state_listeners_();
|
||||
#endif
|
||||
|
||||
@@ -536,6 +536,8 @@ void WiFiComponent::wifi_process_event_(LTWiFiEvent *event) {
|
||||
this->error_from_callback_ = true;
|
||||
}
|
||||
|
||||
// Refresh is_connected() cache; sta_state_/error_from_callback_ make it false.
|
||||
this->update_connected_state_();
|
||||
#ifdef USE_WIFI_CONNECT_STATE_LISTENERS
|
||||
this->notify_disconnect_state_listeners_();
|
||||
#endif
|
||||
|
||||
@@ -342,6 +342,8 @@ void WiFiComponent::wifi_loop_() {
|
||||
s_sta_was_connected = false;
|
||||
s_sta_had_ip = false;
|
||||
ESP_LOGV(TAG, "Disconnected");
|
||||
// Refresh is_connected() cache; driver link status reports disconnected.
|
||||
this->update_connected_state_();
|
||||
#ifdef USE_WIFI_CONNECT_STATE_LISTENERS
|
||||
this->notify_disconnect_state_listeners_();
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user