summaryrefslogtreecommitdiff
path: root/src/timeserver.c
diff options
context:
space:
mode:
authorSamuel Ortiz <sameo@linux.intel.com>2010-06-01 01:58:17 +0200
committerSamuel Ortiz <sameo@linux.intel.com>2010-06-01 02:06:09 +0200
commit40ee49bad468402fa7242801979a392152a039c6 (patch)
tree2c00bc74a58131f88b8c2c177f8046e4baa81122 /src/timeserver.c
parentec6dc19bbeb4c93e951ba5419ccf6768d5811ae6 (diff)
downloadconnman-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.c15
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;
}