Browse Source

Process EVENT_SCHED_SCAN_STOPPED partially if interface is disabled

The internal sched_scanning state needs to be cleared on this event
even if the events happen to get ordered in a way that the interface
gets disabled just prior to EVENT_SCHED_SCAN_STOPPED event.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
Jouni Malinen 13 years ago
parent
commit
9b6f44cb63
1 changed files with 5 additions and 1 deletions
  1. 5 1
      wpa_supplicant/events.c

+ 5 - 1
wpa_supplicant/events.c

@@ -1990,7 +1990,8 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
 
 	if (wpa_s->wpa_state == WPA_INTERFACE_DISABLED &&
 	    event != EVENT_INTERFACE_ENABLED &&
-	    event != EVENT_INTERFACE_STATUS) {
+	    event != EVENT_INTERFACE_STATUS &&
+	    event != EVENT_SCHED_SCAN_STOPPED) {
 		wpa_dbg(wpa_s, MSG_DEBUG,
 			"Ignore event %s (%d) while interface is disabled",
 			event_to_string(event), event);
@@ -2524,6 +2525,9 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
 		wpa_s->sched_scanning = 0;
 		wpa_supplicant_notify_scanning(wpa_s, 0);
 
+		if (wpa_s->wpa_state == WPA_INTERFACE_DISABLED)
+			break;
+
 		/*
 		 * If we timed out, start a new sched scan to continue
 		 * searching for more SSIDs.