Fix ENABLE_NETWORK not to reconnect in disconnected state

DISCONNECT followed by ENABLE_NETWORK ended up starting a scan for a new
connection due to wpa_supplicant_enable_one_network() setting
wpa_s->reassociate = 1. This was done regardless of wpa_s->disconnected
being 1 which should imply that wpa_supplicant should not try to connect
before asked explicitly with REASSOCIATE or RECONNECT.

Fix this by making ENABLE_NETWORK setting of reassociate = 1 and
starting of scans for connection conditional on wpa_s->disconnected ==
0. This will make ENABLE_NETWORK trigger a connection only if
wpa_supplicant is already in a state where it would try to connect if
there are any enabled networks.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
Jouni Malinen 2013-10-23 11:51:45 +03:00 committed by Jouni Malinen
parent 677cf19091
commit d259249762

View file

@ -1798,7 +1798,7 @@ static void wpa_supplicant_enable_one_network(struct wpa_supplicant *wpa_s,
* Try to reassociate since there is no current configuration and a new * Try to reassociate since there is no current configuration and a new
* network was made available. * network was made available.
*/ */
if (!wpa_s->current_ssid) if (!wpa_s->current_ssid && !wpa_s->disconnected)
wpa_s->reassociate = 1; wpa_s->reassociate = 1;
} }
@ -1819,7 +1819,7 @@ void wpa_supplicant_enable_network(struct wpa_supplicant *wpa_s,
} else } else
wpa_supplicant_enable_one_network(wpa_s, ssid); wpa_supplicant_enable_one_network(wpa_s, ssid);
if (wpa_s->reassociate) { if (wpa_s->reassociate && !wpa_s->disconnected) {
if (wpa_s->sched_scanning) { if (wpa_s->sched_scanning) {
wpa_printf(MSG_DEBUG, "Stop ongoing sched_scan to add " wpa_printf(MSG_DEBUG, "Stop ongoing sched_scan to add "
"new network to scan filters"); "new network to scan filters");