Add support for handling wifi authentication failure
[platform/upstream/connman.git] / plugins / wifi.c
index 3b709d8..0b5315f 100755 (executable)
@@ -4482,7 +4482,8 @@ static bool handle_wifi_assoc_retry(struct connman_network *network,
                return false;
        }
 
-       if (wifi->state != G_SUPPLICANT_STATE_ASSOCIATING &&
+       if (wifi->state != G_SUPPLICANT_STATE_AUTHENTICATING &&
+                       wifi->state != G_SUPPLICANT_STATE_ASSOCIATING &&
                        wifi->state != G_SUPPLICANT_STATE_ASSOCIATED) {
                wifi->assoc_retry_count = 0;
                return false;
@@ -4502,7 +4503,17 @@ static bool handle_wifi_assoc_retry(struct connman_network *network,
                 * however QA team recommends that the invalid-key error
                 * might be better to display for user experience.
                 */
-               connman_network_set_error(network, CONNMAN_NETWORK_ERROR_ASSOCIATE_FAIL);
+               switch (wifi->state) {
+               case G_SUPPLICANT_STATE_AUTHENTICATING:
+                       connman_network_set_error(network, CONNMAN_NETWORK_ERROR_AUTHENTICATE_FAIL);
+                       break;
+               case G_SUPPLICANT_STATE_ASSOCIATED:
+                       connman_network_set_error(network, CONNMAN_NETWORK_ERROR_INVALID_KEY);
+                       break;
+               default:
+                       connman_network_set_error(network, CONNMAN_NETWORK_ERROR_ASSOCIATE_FAIL);
+                       break;
+               }
 
                return false;
        }