diff --git a/components/wpa_supplicant/esp_supplicant/src/esp_wps.c b/components/wpa_supplicant/esp_supplicant/src/esp_wps.c index 9ff091fe4a..9f1b364c48 100644 --- a/components/wpa_supplicant/esp_supplicant/src/esp_wps.c +++ b/components/wpa_supplicant/esp_supplicant/src/esp_wps.c @@ -2153,6 +2153,7 @@ int wifi_wps_disable_internal(void) int esp_wifi_wps_disable(void) { int ret = 0; + int wps_status; if (ESP_OK != wps_check_wifi_mode()) { return ESP_ERR_WIFI_MODE; @@ -2166,7 +2167,8 @@ int esp_wifi_wps_disable(void) return ESP_OK; } - wpa_printf(MSG_INFO, "wifi_wps_disable\n"); + wps_status = wps_get_status(); + wpa_printf(MSG_INFO, "wifi_wps_disable"); wps_set_type(WPS_TYPE_DISABLE); /* Notify WiFi task */ /* Call wps_delete_timer to delete all WPS timer, no timer will call wps_post() @@ -2184,7 +2186,10 @@ int esp_wifi_wps_disable(void) wpa_printf(MSG_ERROR, "wps disable: failed to disable wps, ret=%d", ret); } - esp_wifi_disconnect(); + /* Only disconnect in case of WPS pending */ + if (wps_status == WPS_STATUS_PENDING) { + esp_wifi_disconnect(); + } esp_wifi_set_wps_start_flag_internal(false); wps_task_deinit(); s_wps_enabled = false;