diff options
author | Samuel Ortiz <sameo@linux.intel.com> | 2010-06-01 01:58:17 +0200 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2010-06-01 02:06:09 +0200 |
commit | 40ee49bad468402fa7242801979a392152a039c6 (patch) | |
tree | 2c00bc74a58131f88b8c2c177f8046e4baa81122 /src/timeserver.c | |
parent | ec6dc19bbeb4c93e951ba5419ccf6768d5811ae6 (diff) | |
download | connman-40ee49bad468402fa7242801979a392152a039c6.tar.gz connman-40ee49bad468402fa7242801979a392152a039c6.tar.bz2 connman-40ee49bad468402fa7242801979a392152a039c6.zip |
Fix timeserver API
We want to keep the server pointer constant.
Diffstat (limited to 'src/timeserver.c')
-rw-r--r-- | src/timeserver.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/timeserver.c b/src/timeserver.c index bca66f3a..584be263 100644 --- a/src/timeserver.c +++ b/src/timeserver.c @@ -75,7 +75,7 @@ void connman_timeserver_driver_unregister(struct connman_timeserver_driver *driv * * Append time server server address to current list */ -int connman_timeserver_append(char *server) +int connman_timeserver_append(const char *server) { GSList *list; @@ -90,12 +90,17 @@ int connman_timeserver_append(char *server) for (list = driver_list; list; list = list->next) { struct connman_timeserver_driver *driver = list->data; + char *new_server; if (driver->append == NULL) continue; + new_server = g_strdup(server); + if (new_server == NULL) + return -ENOMEM; + if (driver->append(server) == 0) { - g_hash_table_insert(server_hash, server, driver); + g_hash_table_insert(server_hash, new_server, driver); return 0; } } @@ -109,7 +114,7 @@ int connman_timeserver_append(char *server) * * Remover time server server address from current list */ -int connman_timeserver_remove(char *server) +int connman_timeserver_remove(const char *server) { struct connman_timeserver_driver *driver; @@ -122,6 +127,8 @@ int connman_timeserver_remove(char *server) if (driver == NULL) return -EINVAL; + g_hash_table_remove(server_hash, server); + if (driver->remove == NULL) return -ENOENT; @@ -149,7 +156,7 @@ int __connman_timeserver_init(void) DBG(""); server_hash = g_hash_table_new_full(g_str_hash, g_str_equal, - NULL, NULL); + g_free, NULL); return 0; } |