]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
Disconnect before trying to switch to a different network
authorAyala Beker <ayala.beker@intel.com>
Thu, 10 Dec 2015 10:56:05 +0000 (12:56 +0200)
committerJouni Malinen <j@w1.fi>
Thu, 17 Dec 2015 22:24:52 +0000 (00:24 +0200)
Previously, when wpa_supplicant received bgscan results with a preferred
network, it connected to that network without disconnecting from the
previous one. This might result in an inconsistent state of upper
layers.

Fix this by disconnecting from the current AP before connecting to the
new one when the network profile changes and there is an existing
connection.

Signed-off-by: Ayala Beker <ayala.beker@intel.com>
wpa_supplicant/events.c

index a7b053d6c6015f77cfd19d31edde5a8236325524..5e8ebad814ba3514c0e1560fc8d312bb5398caf0 100644 (file)
@@ -1574,6 +1574,13 @@ static int wpas_select_network_from_last_scan(struct wpa_supplicant *wpa_s,
                        return 0;
                }
 
+               if (ssid != wpa_s->current_ssid &&
+                   wpa_s->wpa_state >= WPA_AUTHENTICATING) {
+                       wpa_s->own_disconnect_req = 1;
+                       wpa_supplicant_deauthenticate(
+                               wpa_s, WLAN_REASON_DEAUTH_LEAVING);
+               }
+
                if (wpa_supplicant_connect(wpa_s, selected, ssid) < 0) {
                        wpa_dbg(wpa_s, MSG_DEBUG, "Connect failed");
                        return -1;