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

Reply via email to