diff --git a/components/wpa_supplicant/esp_supplicant/src/esp_wps.c b/components/wpa_supplicant/esp_supplicant/src/esp_wps.c index ccdfb6d455..7a29732c25 100644 --- a/components/wpa_supplicant/esp_supplicant/src/esp_wps.c +++ b/components/wpa_supplicant/esp_supplicant/src/esp_wps.c @@ -681,6 +681,10 @@ static int wps_finish(void) } if (sm->wps->state == WPS_FINISHED) { + if (sm->state == WPA_FINISH_PROCESS) { + return ESP_OK; + } + sm->state = WPA_FINISH_PROCESS; bool connect = (sm->ap_cred_cnt == 1); #ifdef CONFIG_WPS_RECONNECT_ON_FAIL diff --git a/components/wpa_supplicant/esp_supplicant/src/esp_wps_i.h b/components/wpa_supplicant/esp_supplicant/src/esp_wps_i.h index d32b1c4334..2ff0fd73e1 100644 --- a/components/wpa_supplicant/esp_supplicant/src/esp_wps_i.h +++ b/components/wpa_supplicant/esp_supplicant/src/esp_wps_i.h @@ -31,6 +31,7 @@ typedef struct { enum wps_sm_state { WAIT_START, WPA_MESG, + WPA_FINISH_PROCESS, WPA_FAIL }; #endif /* ESP_SUPPLICANT */