@@ -72,6 +72,7 @@ void wifi_station_wps_msg_timeout(void *data, void *user_ctx);
7272void wifi_station_wps_eapol_start_handle (void * data , void * user_ctx );
7373void wifi_station_wps_success (void * data , void * user_ctx );
7474void wifi_station_wps_timeout (void * data , void * user_ctx );
75+ int wps_delete_timer (void );
7576
7677struct wps_sm * gWpsSm = NULL ;
7778static wps_factory_information_t * s_factory_info = NULL ;
@@ -834,7 +835,8 @@ int wps_finish(void)
834835 if (sm -> wps -> state == WPS_FINISHED ) {
835836 wpa_printf (MSG_DEBUG , "wps finished------>" );
836837 wps_set_status (WPS_STATUS_SUCCESS );
837- wps_stop_connection_timers (sm );
838+ /* WPS finished, dequeue all timers */
839+ wps_delete_timer ();
838840
839841 if (sm -> ap_cred_cnt == 1 ) {
840842 wifi_config_t * config = os_zalloc (sizeof (wifi_config_t ));
@@ -844,6 +846,7 @@ int wps_finish(void)
844846 }
845847
846848 esp_wifi_get_config (WIFI_IF_STA , config );
849+ esp_wifi_disconnect ();
847850 os_memcpy (config -> sta .ssid , sm -> creds [0 ].ssid , sm -> creds [0 ].ssid_len );
848851 os_memcpy (config -> sta .password , sm -> creds [0 ].key , sm -> creds [0 ].key_len );
849852 os_memcpy (config -> sta .bssid , sm -> bssid , ETH_ALEN );
@@ -857,6 +860,7 @@ int wps_finish(void)
857860 config -> sta .bssid_set = 0 ;
858861 config -> sta .sae_pwe_h2e = 0 ;
859862 esp_wifi_set_config (WIFI_IF_STA , config );
863+ esp_wifi_connect ();
860864
861865 os_free (config );
862866 }
0 commit comments