vpn-provider: Introduce immutable flag to provider data
[platform/upstream/connman.git] / plugins / wifi.c
index d2ab3b0..dd79cd3 100644 (file)
@@ -424,7 +424,7 @@ static int get_hidden_connections(int max_ssids,
        /*
         * Check if there are any hidden AP that needs to be provisioned.
         */
-       entries = connman_config_get_entries();
+       entries = connman_config_get_entries("wifi");
        for (i = 0; entries && entries[i]; i++) {
                int len;
 
@@ -530,7 +530,8 @@ static void scan_callback_hidden(int result,
 {
        struct connman_device *device = user_data;
        struct wifi_data *wifi = connman_device_get_data(device);
-       int driver_max_ssids;
+       GSupplicantScanParams *scan_params;
+       int driver_max_ssids, ret;
 
        DBG("result %d wifi %p", result, wifi);
 
@@ -539,32 +540,30 @@ static void scan_callback_hidden(int result,
 
        /*
         * Scan hidden networks so that we can autoconnect to them.
+        * We will assume 1 as a default number of ssid to scan.
         */
        driver_max_ssids = g_supplicant_interface_get_max_scan_ssids(
                                                        wifi->interface);
-       DBG("max ssids %d", driver_max_ssids);
+       if (driver_max_ssids == 0)
+               driver_max_ssids = 1;
 
-       if (driver_max_ssids > 0) {
-               GSupplicantScanParams *scan_params;
-               int ret;
+       DBG("max ssids %d", driver_max_ssids);
 
-               scan_params = g_try_malloc0(sizeof(GSupplicantScanParams));
-               if (scan_params == NULL)
-                       goto out;
+       scan_params = g_try_malloc0(sizeof(GSupplicantScanParams));
+       if (scan_params == NULL)
+               goto out;
 
-               if (get_hidden_connections(driver_max_ssids,
-                                               scan_params) > 0) {
-                       ret = g_supplicant_interface_scan(wifi->interface,
+       if (get_hidden_connections(driver_max_ssids, scan_params) > 0) {
+               ret = g_supplicant_interface_scan(wifi->interface,
                                                        scan_params,
                                                        scan_callback,
                                                        device);
-                       if (ret == 0)
-                               return;
-               }
-
-               g_supplicant_free_scan_params(scan_params);
+               if (ret == 0)
+                       return;
        }
 
+       g_supplicant_free_scan_params(scan_params);
+
 out:
        scan_callback(result, interface, user_data);
 }
@@ -1238,6 +1237,14 @@ static void disconnect_callback(int result, GSupplicantInterface *interface,
 {
        struct wifi_data *wifi = user_data;
 
+       DBG("result %d supplicant interface %p wifi %p",
+                       result, interface, wifi);
+
+       if (result == -ECONNABORTED) {
+               DBG("wifi interface no longer available");
+               return;
+       }
+
        if (wifi->network != NULL) {
                /*
                 * if result < 0 supplican return an error because