Refactor set_property's Timeservers.Configuration to a separate function. --- src/connman.h | 2 ++ src/service.c | 46 +++++++++++++++++++++++++++++++--------------- 2 files changed, 33 insertions(+), 15 deletions(-)
diff --git a/src/connman.h b/src/connman.h index 8f64e65..9f9f665 100644 --- a/src/connman.h +++ b/src/connman.h @@ -763,6 +763,8 @@ bool __connman_service_set_autoconnect(struct connman_service *service, bool autoconnect); bool __connman_service_set_nameservers_conf(struct connman_service *service, char **nameservers); +bool __connman_service_set_timeservers_conf(struct connman_service *service, + char **nameservers); void __connman_service_set_hidden(struct connman_service *service); void __connman_service_set_hostname(struct connman_service *service, const char *hostname); diff --git a/src/service.c b/src/service.c index 0ed3bdb..8fefe6a 100644 --- a/src/service.c +++ b/src/service.c @@ -2538,6 +2538,31 @@ bool __connman_service_set_nameservers_conf(struct connman_service *service, return true; } +bool __connman_service_set_timeservers_conf(struct connman_service *service, + char **timeservers) +{ + if (service->immutable) { + g_strfreev(timeservers); + return false; + } + + g_strfreev(service->timeservers_config); + service->timeservers_config = NULL; + + if (timeservers) { + timeservers = remove_empty_strings(timeservers); + service->timeservers_config = timeservers; + } + + service_save(service); + timeservers_configuration_changed(service); + + if (service == __connman_service_get_default()) + __connman_timeserver_sync(service); + + return true; +} + void __connman_service_set_hidden(struct connman_service *service) { if (!service || service->hidden) @@ -3341,6 +3366,7 @@ static DBusMessage *set_property(DBusConnection *conn, } else if (g_str_equal(name, "Timeservers.Configuration")) { DBusMessageIter entry; GString *str; + char **timeservers = NULL; if (service->immutable) return __connman_error_not_supported(msg); @@ -3368,24 +3394,14 @@ static DBusMessage *set_property(DBusConnection *conn, g_string_append(str, val); } - g_strfreev(service->timeservers_config); - service->timeservers_config = NULL; - - if (str->len > 0) { - char **timeservers = g_strsplit_set(str->str, " ", 0); - timeservers = remove_empty_strings(timeservers); - service->timeservers_config = timeservers; - } else - service->timeservers = NULL; + if (str->len > 0) + timeservers = g_strsplit_set(str->str, " ", 0); g_string_free(str, TRUE); - service_save(service); - timeservers_configuration_changed(service); - - if (service == __connman_service_get_default()) - __connman_timeserver_sync(service); - + if (!__connman_service_set_timeservers_conf(service, + timeservers)) + return __connman_error_invalid_arguments(msg); } else if (g_str_equal(name, "Domains.Configuration")) { DBusMessageIter entry; GString *str; -- 2.5.3 _______________________________________________ connman mailing list connman@connman.net https://lists.connman.net/mailman/listinfo/connman