diff options
author | Alok Barsode <alok.barsode@linux.intel.com> | 2012-04-05 13:20:15 +0300 |
---|---|---|
committer | Patrik Flykt <patrik.flykt@linux.intel.com> | 2012-04-05 18:55:16 +0300 |
commit | 85d7f68601947d147c1eccff2d06cab74039f9f6 (patch) | |
tree | 26542dfd5f62f1d8a2dc966c6cbbf43b28cb23ec /src/timeserver.c | |
parent | 5bb3888705ad0fd2f545f4b7fe1dad13c9d7f009 (diff) | |
download | connman-85d7f68601947d147c1eccff2d06cab74039f9f6.tar.gz connman-85d7f68601947d147c1eccff2d06cab74039f9f6.tar.bz2 connman-85d7f68601947d147c1eccff2d06cab74039f9f6.zip |
timeserver: Trigger ntp on default changed notifier
Trigger NTP sync on default service going to READY/ONLINE state
instead of triggering NTP sync on ONLINE state only. This makes
sense for local ntp servers even if the wispr check fails.
Diffstat (limited to 'src/timeserver.c')
-rw-r--r-- | src/timeserver.c | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/src/timeserver.c b/src/timeserver.c index 08dd81b5..8622431e 100644 --- a/src/timeserver.c +++ b/src/timeserver.c @@ -155,11 +155,20 @@ void __connman_timeserver_sync_next() NULL); } -int __connman_timeserver_sync(struct connman_service *service) +int __connman_timeserver_sync(struct connman_service *default_service) { - char **nameservers = NULL; + struct connman_service *service; + char **nameservers; int i; + if (default_service != NULL) + service = default_service; + else + service = __connman_service_get_default(); + + if (service == NULL) + return -EINVAL; + DBG("service %p", service); i = __connman_service_get_index(service); @@ -242,14 +251,33 @@ char **__connman_timeserver_system_get() return servers; } +static void default_changed(struct connman_service *default_service) +{ + DBG(""); + + if (default_service != NULL) + __connman_timeserver_sync(default_service); + else + __connman_timeserver_stop(); +} + +static struct connman_notifier timeserver_notifier = { + .name = "timeserver", + .default_changed = default_changed, +}; + int __connman_timeserver_init(void) { DBG(""); + connman_notifier_register(×erver_notifier); + return 0; } void __connman_timeserver_cleanup(void) { DBG(""); + + connman_notifier_unregister(×erver_notifier); } |