From aedff64e337b2e994d65fa58379cd7dfe967917d Mon Sep 17 00:00:00 2001 From: me-no-dev Date: Mon, 10 Nov 2025 11:08:41 +0200 Subject: [PATCH] fix(wifi): Fix WiFi.disconnect(true, true) not working --- libraries/WiFi/src/STA.cpp | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/libraries/WiFi/src/STA.cpp b/libraries/WiFi/src/STA.cpp index 84258589b28..36577a38b83 100644 --- a/libraries/WiFi/src/STA.cpp +++ b/libraries/WiFi/src/STA.cpp @@ -525,25 +525,6 @@ bool STAClass::connect( #endif /* CONFIG_ESP_WIFI_ENTERPRISE_SUPPORT */ bool STAClass::disconnect(bool eraseap, unsigned long timeout) { - if (eraseap) { - if (!started()) { - log_e("STA not started! You must call begin first."); - return false; - } - wifi_config_t conf; - memset(&conf, 0, sizeof(wifi_config_t)); - esp_err_t err = esp_wifi_set_config(WIFI_IF_STA, &conf); - if (err != ESP_OK) { - log_e("STA clear config failed! 0x%x: %s", err, esp_err_to_name(err)); - return false; - } - } - - if (!connected()) { - log_w("STA already disconnected."); - return true; - } - esp_err_t err = esp_wifi_disconnect(); if (err != ESP_OK) { log_e("STA disconnect failed! 0x%x: %s", err, esp_err_to_name(err)); @@ -560,6 +541,20 @@ bool STAClass::disconnect(bool eraseap, unsigned long timeout) { } } + if (eraseap) { + if (!started()) { + log_e("STA not started! You must call begin first."); + return false; + } + wifi_config_t conf; + memset(&conf, 0, sizeof(wifi_config_t)); + esp_err_t err = esp_wifi_set_config(WIFI_IF_STA, &conf); + if (err != ESP_OK) { + log_e("STA clear config failed! 0x%x: %s", err, esp_err_to_name(err)); + return false; + } + } + return true; }