summaryrefslogtreecommitdiff
path: root/src/config.c
diff options
context:
space:
mode:
authorHenri Bragge <henri.bragge@ixonos.com>2011-04-01 11:41:38 +0300
committerSamuel Ortiz <sameo@linux.intel.com>2011-04-11 12:02:42 +0200
commita667e05447dc2276a4e359a41a1604e20da17689 (patch)
tree0e89efb2d1512014c7f0c75ed4c07e0e222ee2f4 /src/config.c
parent375413a93ff842f129b02fda06954ba0b41e76cc (diff)
downloadconnman-a667e05447dc2276a4e359a41a1604e20da17689.tar.gz
connman-a667e05447dc2276a4e359a41a1604e20da17689.tar.bz2
connman-a667e05447dc2276a4e359a41a1604e20da17689.zip
config: Fix service configuration update
Service config should not be replaced after update (the existing struct shall be reused).
Diffstat (limited to 'src/config.c')
-rw-r--r--src/config.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/config.c b/src/config.c
index e4dfcd90..dcef4e53 100644
--- a/src/config.c
+++ b/src/config.c
@@ -171,6 +171,7 @@ static int load_service(GKeyFile *keyfile, const char *group,
struct connman_config_service *service;
const char *ident;
char *str, *hex_ssid;
+ gboolean service_created = FALSE;
/* Strip off "service_" prefix */
ident = group + 8;
@@ -188,6 +189,8 @@ static int load_service(GKeyFile *keyfile, const char *group,
return -ENOMEM;
service->ident = g_strdup(ident);
+
+ service_created = TRUE;
}
str = g_key_file_get_string(keyfile, group, SERVICE_KEY_TYPE, NULL);
@@ -297,7 +300,9 @@ static int load_service(GKeyFile *keyfile, const char *group,
service->passphrase = str;
}
- g_hash_table_replace(config->service_table, service->ident, service);
+ if (service_created)
+ g_hash_table_insert(config->service_table, service->ident,
+ service);
connman_info("Adding service configuration %s", service->ident);