path: root/wpa_supplicant/p2p_supplicant.c
diff options
authorJouni Malinen <jouni@qca.qualcomm.com>2015-12-30 17:02:33 (GMT)
committerJouni Malinen <j@w1.fi>2015-12-30 17:02:33 (GMT)
commit8b8d4f4eb4cd92c157611325b5156d0e5d22ae06 (patch)
treeb44adc58cd9a165fda18927880eea175ca7759d6 /wpa_supplicant/p2p_supplicant.c
parentb875276c4d5806d3b566822b5726e101c4295fc0 (diff)
P2P: Do not accept any BSS entry for join if SSID is already known
Use wpa_bss_get() with the specific Group SSID instead of wpa_bss_get_bssid_latest() if the SSID is already known. This makes the P2P join operations more robust in case the frequency of the group was not yet known and the same P2P Interface Address may have been used in multiple group instances with an older group entry still present in the cached scan results. Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Diffstat (limited to 'wpa_supplicant/p2p_supplicant.c')
1 files changed, 7 insertions, 2 deletions
diff --git a/wpa_supplicant/p2p_supplicant.c b/wpa_supplicant/p2p_supplicant.c
index 4040e61..7b97651 100644
--- a/wpa_supplicant/p2p_supplicant.c
+++ b/wpa_supplicant/p2p_supplicant.c
@@ -5091,8 +5091,13 @@ static int wpas_p2p_join_start(struct wpa_supplicant *wpa_s, int freq,
res.ssid_len = ssid_len;
os_memcpy(res.ssid, ssid, ssid_len);
} else {
- bss = wpa_bss_get_bssid_latest(wpa_s,
- wpa_s->pending_join_iface_addr);
+ if (ssid && ssid_len) {
+ bss = wpa_bss_get(wpa_s, wpa_s->pending_join_iface_addr,
+ ssid, ssid_len);
+ } else {
+ bss = wpa_bss_get_bssid_latest(
+ wpa_s, wpa_s->pending_join_iface_addr);
+ }
if (bss) {
res.freq = bss->freq;
res.ssid_len = bss->ssid_len;