Merge "wpa_supplicant(hidl): Send the active bssid on state change" am: e5e55bff98 am: c85cc1cb2a
am: a1f900ff43
Change-Id: I6bed879726c50472027d60bb18201c79a1e7207d
diff --git a/wpa_supplicant/hidl/hidl_manager.cpp b/wpa_supplicant/hidl/hidl_manager.cpp
index 2ba99bd..a22a0d1 100644
--- a/wpa_supplicant/hidl/hidl_manager.cpp
+++ b/wpa_supplicant/hidl/hidl_manager.cpp
@@ -650,13 +650,22 @@
wpa_s->current_ssid->ssid,
wpa_s->current_ssid->ssid + wpa_s->current_ssid->ssid_len);
}
+ uint8_t *bssid;
+ // wpa_supplicant sets the |pending_bssid| field when it starts a
+ // connection. Only after association state does it update the |bssid|
+ // field. So, in the HIDL callback send the appropriate bssid.
+ if (wpa_s->wpa_state <= WPA_ASSOCIATED) {
+ bssid = wpa_s->pending_bssid;
+ } else {
+ bssid = wpa_s->bssid;
+ }
callWithEachStaIfaceCallback(
wpa_s->ifname, std::bind(
&ISupplicantStaIfaceCallback::onStateChanged,
std::placeholders::_1,
static_cast<ISupplicantStaIfaceCallback::State>(
wpa_s->wpa_state),
- wpa_s->bssid, hidl_network_id, hidl_ssid));
+ bssid, hidl_network_id, hidl_ssid));
return 0;
}