Restore previous wpa_state in scan-only result handler
authorJouni Malinen <j@w1.fi>
Sun, 1 Nov 2015 18:26:35 +0000 (20:26 +0200)
committerJouni Malinen <j@w1.fi>
Sun, 1 Nov 2015 18:26:35 +0000 (20:26 +0200)
The SCAN TYPE=ONLY results do not trigger a connection operation
automatically. As such, there was no explicit operation that would
change wpa_state after such a scan-only operation and WPA_SCANNING state
could have been left in effect until the next operation is triggered by
an external command. This is not desirable, so restore the wpa_state
that was in use when the scan was started in case WPA_SCANNING state is
still set when the scan operation completes.

This was triggered by the following mac80211_hwsim test sequence:
dbus_wps_oom scan_trigger_failure

Signed-off-by: Jouni Malinen <j@w1.fi>
wpa_supplicant/scan.c

index 2b41ca8..076766e 100644 (file)
@@ -2148,6 +2148,9 @@ void scan_only_handler(struct wpa_supplicant *wpa_s,
                wpa_s->scan_work = NULL;
                radio_work_done(work);
        }
+
+       if (wpa_s->wpa_state == WPA_SCANNING)
+               wpa_supplicant_set_state(wpa_s, wpa_s->scan_prev_wpa_state);
 }