]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
Only try fast reconnect if network is not disabled
authorJouni Malinen <jouni@qca.qualcomm.com>
Tue, 18 Feb 2014 10:07:06 +0000 (12:07 +0200)
committerJouni Malinen <j@w1.fi>
Tue, 25 Feb 2014 21:52:09 +0000 (23:52 +0200)
Previously, it would have been possible for the network to be marked
disabled and that marking to be ignored if a recoverable disconnection
reason event were processed. Avoid this by verifying network status
before trying to reconenct back to the same BSS.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
wpa_supplicant/events.c

index 44449440f94d5419912af1f743a78da8b41ae605..abffc0829fa2776a0cc5e3f0d4ecee63fd14f1df 100644 (file)
@@ -2182,7 +2182,12 @@ static void wpa_supplicant_event_disassoc_finish(struct wpa_supplicant *wpa_s,
                wpa_s->current_ssid = last_ssid;
        }
 
-       if (fast_reconnect) {
+       if (fast_reconnect &&
+           !wpas_network_disabled(wpa_s, fast_reconnect_ssid) &&
+           !disallowed_bssid(wpa_s, fast_reconnect->bssid) &&
+           !disallowed_ssid(wpa_s, fast_reconnect->ssid,
+                            fast_reconnect->ssid_len) &&
+           !wpas_temp_disabled(wpa_s, fast_reconnect_ssid)) {
 #ifndef CONFIG_NO_SCAN_PROCESSING
                wpa_dbg(wpa_s, MSG_DEBUG, "Try to reconnect to the same BSS");
                if (wpa_supplicant_connect(wpa_s, fast_reconnect,
@@ -2191,6 +2196,14 @@ static void wpa_supplicant_event_disassoc_finish(struct wpa_supplicant *wpa_s,
                        wpa_supplicant_req_scan(wpa_s, 0, 100000);
                }
 #endif /* CONFIG_NO_SCAN_PROCESSING */
+       } else if (fast_reconnect) {
+               /*
+                * Could not reconnect to the same BSS due to network being
+                * disabled. Use a new scan to match the alternative behavior
+                * above, i.e., to continue automatic reconnection attempt in a
+                * way that enforces disabled network rules.
+                */
+               wpa_supplicant_req_scan(wpa_s, 0, 100000);
        }
 }