SME: Fix processing of Authentication timeout and failure

current_bss and pending_bssid weren't cleaned up so BSS
kept appearing in the scan results even when it was actually gone.
Use wpa_supplicant_mark_disassoc() to cleanup the wpa_s context
instead of just dropping wpa_state back to DISCONNECTED.

Reported-by: Vishal Mahaveer <vishalm@ti.com>
Signed-hostap: Eyal Shapira <eyal@wizery.com>
This commit is contained in:
Eyal Shapira 2012-01-29 17:44:31 +02:00 committed by Jouni Malinen
parent b3aa456b3e
commit 1193dc8fd7

View file

@ -265,8 +265,8 @@ void sme_authenticate(struct wpa_supplicant *wpa_s,
if (wpa_drv_authenticate(wpa_s, &params) < 0) { if (wpa_drv_authenticate(wpa_s, &params) < 0) {
wpa_msg(wpa_s, MSG_INFO, "SME: Authentication request to the " wpa_msg(wpa_s, MSG_INFO, "SME: Authentication request to the "
"driver failed"); "driver failed");
wpa_supplicant_set_state(wpa_s, WPA_DISCONNECTED);
wpas_connection_failed(wpa_s, bss->bssid); wpas_connection_failed(wpa_s, bss->bssid);
wpa_supplicant_mark_disassoc(wpa_s);
return; return;
} }
@ -503,8 +503,8 @@ void sme_event_auth_timed_out(struct wpa_supplicant *wpa_s,
union wpa_event_data *data) union wpa_event_data *data)
{ {
wpa_dbg(wpa_s, MSG_DEBUG, "SME: Authentication timed out"); wpa_dbg(wpa_s, MSG_DEBUG, "SME: Authentication timed out");
wpa_supplicant_set_state(wpa_s, WPA_DISCONNECTED);
wpas_connection_failed(wpa_s, wpa_s->pending_bssid); wpas_connection_failed(wpa_s, wpa_s->pending_bssid);
wpa_supplicant_mark_disassoc(wpa_s);
} }