|
@@ -306,10 +306,18 @@ static int wpa_bss_known(struct wpa_supplicant *wpa_s, struct wpa_bss *bss)
|
|
|
|
|
|
static int wpa_bss_in_use(struct wpa_supplicant *wpa_s, struct wpa_bss *bss)
|
|
|
{
|
|
|
- return bss == wpa_s->current_bss ||
|
|
|
- (!is_zero_ether_addr(bss->bssid) &&
|
|
|
- (os_memcmp(bss->bssid, wpa_s->bssid, ETH_ALEN) == 0 ||
|
|
|
- os_memcmp(bss->bssid, wpa_s->pending_bssid, ETH_ALEN) == 0));
|
|
|
+ if (bss == wpa_s->current_bss)
|
|
|
+ return 1;
|
|
|
+
|
|
|
+ if (wpa_s->current_bss &&
|
|
|
+ (bss->ssid_len != wpa_s->current_bss->ssid_len ||
|
|
|
+ os_memcmp(bss->ssid, wpa_s->current_bss->ssid,
|
|
|
+ bss->ssid_len) != 0))
|
|
|
+ return 0; /* SSID has changed */
|
|
|
+
|
|
|
+ return !is_zero_ether_addr(bss->bssid) &&
|
|
|
+ (os_memcmp(bss->bssid, wpa_s->bssid, ETH_ALEN) == 0 ||
|
|
|
+ os_memcmp(bss->bssid, wpa_s->pending_bssid, ETH_ALEN) == 0);
|
|
|
}
|
|
|
|
|
|
|