Restore wpa_s->scan_req if scan trigger fails
authorJouni Malinen <jouni@qca.qualcomm.com>
Tue, 30 Oct 2012 10:27:05 +0000 (12:27 +0200)
committerJouni Malinen <j@w1.fi>
Tue, 30 Oct 2012 10:27:05 +0000 (12:27 +0200)
If the driver rejects the scan request while handling an external
requested scan (e.g., SCAN command on ctrl_iface), wpa_s->scan_req gets
cleared in wpa_supplicant_scan(). This can results in issues when the
scheduled re-try of the scan in one seconds trigger another call to this
function. If ap_scan==2 mode is used, this would result in new
association attempt instead of a new scan. Avoid this by restoring value
of wpa_s->scan_req in case the scan trigger fails and a new scan attempt
is scheduled.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

wpa_supplicant/scan.c

index 68bdc59..df663bc 100644 (file)
@@ -696,6 +696,8 @@ scan:
                wpa_msg(wpa_s, MSG_WARNING, "Failed to initiate AP scan");
                if (prev_state != wpa_s->wpa_state)
                        wpa_supplicant_set_state(wpa_s, prev_state);
+               /* Restore scan_req since we will try to scan again */
+               wpa_s->scan_req = scan_req;
                wpa_supplicant_req_scan(wpa_s, 1, 0);
        }
 }