Browse Source

P2P: Check all interfaces for pending scan for p2p_scan failures

Driver could reject the new scan based on any virtual interface
running a concurrent scan. As such, mark the pending scan callback
for P2P based on any interfaces instead of just the one used for
the p2p_scan operation.

Signed-hostap: Jouni Malinen <j@w1.fi>
Jouni Malinen 12 years ago
parent
commit
58d3760e7e
1 changed files with 7 additions and 4 deletions
  1. 7 4
      wpa_supplicant/p2p_supplicant.c

+ 7 - 4
wpa_supplicant/p2p_supplicant.c

@@ -189,10 +189,13 @@ static int wpas_p2p_scan(void *ctx, enum p2p_scan_type type, int freq,
 	wpabuf_free(ies);
 
 	if (ret) {
-		if (wpa_s->scanning ||
-		    wpa_s->scan_res_handler == wpas_p2p_scan_res_handler) {
-			wpa_s->global->p2p_cb_on_scan_complete = 1;
-			ret = 1;
+		for (ifs = wpa_s->global->ifaces; ifs; ifs = ifs->next) {
+			if (ifs->scanning ||
+			    ifs->scan_res_handler == wpas_p2p_scan_res_handler) {
+				wpa_s->global->p2p_cb_on_scan_complete = 1;
+				ret = 1;
+				break;
+			}
 		}
 	} else
 		wpa_s->scan_res_handler = wpas_p2p_scan_res_handler;