Merge tag 'upstream/1.40' into tizen.
[platform/upstream/connman.git] / src / technology.c
index 6a539dc..7480ce9 100644 (file)
@@ -216,10 +216,12 @@ static void technology_save(struct connman_technology *technology)
                                        "Tethering.Identifier",
                                        technology->tethering_ident);
 
-       if (technology->tethering_passphrase)
+       if (technology->tethering_passphrase) {
+               char *enc = g_strescape(technology->tethering_passphrase, NULL);
                g_key_file_set_string(keyfile, identifier,
-                                       "Tethering.Passphrase",
-                                       technology->tethering_passphrase);
+                                       "Tethering.Passphrase", enc);
+               g_free(enc);
+       }
 
 #ifdef TIZEN_EXT
        if (technology->type == CONNMAN_SERVICE_TYPE_WIFI) {
@@ -446,6 +448,7 @@ static void technology_load(struct connman_technology *technology)
        gchar *identifier;
        GError *error = NULL;
        bool enable, need_saving = false;
+       char *enc;
 
        DBG("technology %p", technology);
 
@@ -502,9 +505,10 @@ static void technology_load(struct connman_technology *technology)
        technology->tethering_ident = g_key_file_get_string(keyfile,
                                identifier, "Tethering.Identifier", NULL);
 
-       technology->tethering_passphrase = g_key_file_get_string(keyfile,
+       enc = g_key_file_get_string(keyfile,
                                identifier, "Tethering.Passphrase", NULL);
-
+       if (enc)
+               technology->tethering_passphrase = g_strcompress(enc);
 #ifdef TIZEN_EXT
        if (technology->type == CONNMAN_SERVICE_TYPE_WIFI) {
                unsigned int val = 0;
@@ -1663,6 +1667,43 @@ static void __connman_technology_notify_device_detected(
 
        DBG("Successfuly sent DeviceDetected signal");
 }
+
+void __connman_technology_notify_roaming_state(const char *ifname,
+               const char *state, const char *cur_bssid, const char *dst_bssid)
+{
+       DBG("");
+       DBusMessage *signal;
+       DBusMessageIter array, dict;
+
+       signal = dbus_message_new_signal(CONNMAN_MANAGER_PATH,
+                       CONNMAN_MANAGER_INTERFACE, "RoamingStateChanged");
+       if (!signal)
+               return;
+
+       dbus_message_iter_init_append(signal, &array);
+
+       connman_dbus_dict_open(&array, &dict);
+
+       if (ifname)
+               connman_dbus_dict_append_basic(&dict, "Interface",
+                                       DBUS_TYPE_STRING, &ifname);
+       if (state)
+               connman_dbus_dict_append_basic(&dict, "State",
+                                       DBUS_TYPE_STRING, &state);
+       if (cur_bssid)
+               connman_dbus_dict_append_basic(&dict, "ConnectedBSSID",
+                                       DBUS_TYPE_STRING, &cur_bssid);
+       if (dst_bssid)
+               connman_dbus_dict_append_basic(&dict, "TargetBSSID",
+                                       DBUS_TYPE_STRING, &dst_bssid);
+
+       connman_dbus_dict_close(&array, &dict);
+
+       dbus_connection_send(connection, signal, NULL);
+       dbus_message_unref(signal);
+
+       DBG("Successfully sent Roaming State Changed signal");
+}
 #endif
 
 void __connman_technology_scan_started(struct connman_device *device)
@@ -2223,6 +2264,9 @@ void technology_save_device(struct connman_device *device)
        if (!technology)
                return;
 
+       if (!g_slist_find(technology->device_list, device))
+               return;
+
        GKeyFile *keyfile;
        gchar *identifier;
        const char *name = get_name(technology->type);