]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
Reinitialize autoscan on explicit reassocciate/reconnect command
authorJouni Malinen <j@w1.fi>
Tue, 26 Jun 2012 17:05:51 +0000 (20:05 +0300)
committerJouni Malinen <j@w1.fi>
Tue, 26 Jun 2012 17:05:51 +0000 (20:05 +0300)
This clears the exponential scan interval back to the base value
when a reconnection is requested explicitly.

Signed-hostap: Jouni Malinen <j@w1.fi>

wpa_supplicant/ctrl_iface.c
wpa_supplicant/wpa_supplicant.c
wpa_supplicant/wpa_supplicant_i.h

index c3612a540ba64bb65dc52650a54244714a0cf85f..338fd5f63e64f769565176c15372aeaa44ab478a 100644 (file)
@@ -3984,6 +3984,7 @@ char * wpa_supplicant_ctrl_iface_process(struct wpa_supplicant *wpa_s,
                eapol_sm_notify_logoff(wpa_s->eapol, TRUE);
        } else if (os_strcmp(buf, "REASSOCIATE") == 0) {
                wpa_s->normal_scans = 0;
+               wpa_supplicant_reinit_autoscan(wpa_s);
                if (wpa_s->wpa_state == WPA_INTERFACE_DISABLED)
                        reply_len = -1;
                else {
@@ -3993,6 +3994,7 @@ char * wpa_supplicant_ctrl_iface_process(struct wpa_supplicant *wpa_s,
                }
        } else if (os_strcmp(buf, "RECONNECT") == 0) {
                wpa_s->normal_scans = 0;
+               wpa_supplicant_reinit_autoscan(wpa_s);
                if (wpa_s->wpa_state == WPA_INTERFACE_DISABLED)
                        reply_len = -1;
                else if (wpa_s->disconnected) {
index 78118d4504b44941983ce6a7c28e505ac0cd869f..c65dc3c3061e2e8cc5748ca97692ab34d0f6162c 100644 (file)
@@ -585,6 +585,16 @@ static void wpa_supplicant_stop_autoscan(struct wpa_supplicant *wpa_s)
 }
 
 
+void wpa_supplicant_reinit_autoscan(struct wpa_supplicant *wpa_s)
+{
+       if (wpa_s->wpa_state == WPA_DISCONNECTED ||
+           wpa_s->wpa_state == WPA_SCANNING) {
+               autoscan_deinit(wpa_s);
+               wpa_supplicant_start_autoscan(wpa_s);
+       }
+}
+
+
 /**
  * wpa_supplicant_set_state - Set current connection state
  * @wpa_s: Pointer to wpa_supplicant data
index cce897ea555ed2ddff5ae33a5bd172f514ecf8ed..2d6ee3897c53e5b6c2cc664727ca9a0a4e9c06c3 100644 (file)
@@ -598,6 +598,7 @@ void wpa_supplicant_initiate_eapol(struct wpa_supplicant *wpa_s);
 void wpa_clear_keys(struct wpa_supplicant *wpa_s, const u8 *addr);
 void wpa_supplicant_req_auth_timeout(struct wpa_supplicant *wpa_s,
                                     int sec, int usec);
+void wpa_supplicant_reinit_autoscan(struct wpa_supplicant *wpa_s);
 void wpa_supplicant_set_state(struct wpa_supplicant *wpa_s,
                              enum wpa_states state);
 struct wpa_ssid * wpa_supplicant_get_ssid(struct wpa_supplicant *wpa_s);