From: Pasi Sjöholm <pasi.sjoh...@jollamobile.com>

It's possible from wpa_s to change the state from completed to scanning
without going through disconnected state if interface signals that the carrier
went off and on (IFF_LOWER_UP flag).

This will cause dead lock similar in c810464828d6764bea304de3e9b6b151aa05e313
if the wifi gets into associating state as the network->connected is still true
but wifi->connected is not.
---
 plugins/wifi.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/plugins/wifi.c b/plugins/wifi.c
index d0d7917..046373c 100755
--- a/plugins/wifi.c
+++ b/plugins/wifi.c
@@ -2341,6 +2341,9 @@ static void interface_state(GSupplicantInterface 
*interface)
 
        switch (state) {
        case G_SUPPLICANT_STATE_SCANNING:
+               if (wifi->connected)
+                       connman_network_set_connected(network, false);
+
                break;
 
        case G_SUPPLICANT_STATE_AUTHENTICATING:
@@ -2435,6 +2438,14 @@ static void interface_state(GSupplicantInterface 
*interface)
                else
                        wifi->connected = false;
                break;
+       case G_SUPPLICANT_STATE_SCANNING:
+               if (wifi->connected) {
+                       wifi->connected = false;
+                       start_autoscan(device);
+               } else {
+                       wifi->connected = false;
+               }
+               break;
        case G_SUPPLICANT_STATE_COMPLETED:
                wifi->connected = true;
                break;
-- 
2.1.4

_______________________________________________
connman mailing list
connman@connman.net
https://lists.connman.net/mailman/listinfo/connman

Reply via email to