session: Factor out set default config helper
authorDaniel Wagner <daniel.wagner@bmw-carit.de>
Tue, 13 Nov 2012 08:01:48 +0000 (09:01 +0100)
committerDaniel Wagner <daniel.wagner@bmw-carit.de>
Fri, 23 Nov 2012 12:47:24 +0000 (13:47 +0100)
Whenever a configuration gets invalid (e.g. a configuration
is removed) then we need to be able to drop back to the
default configutation.

include/session.h
src/session.c

index a422952..4aca5d0 100644 (file)
@@ -78,6 +78,7 @@ void connman_session_policy_unregister(struct connman_session_policy *config);
 int connman_session_config_update(struct connman_session *session);
 void connman_session_destroy(struct connman_session *session);
 
+int connman_session_set_default_config(struct connman_session_config *config);
 struct connman_session_config *connman_session_create_default_config(void);
 
 enum connman_session_roaming_policy connman_session_parse_roaming_policy(const char *policy);
index 0b0321f..c232788 100644 (file)
@@ -352,6 +352,22 @@ void connman_session_policy_unregister(struct connman_session_policy *policy)
        remove_policy(policy);
 }
 
+int connman_session_set_default_config(struct connman_session_config *config)
+{
+       config->priority = FALSE;
+       config->roaming_policy = CONNMAN_SESSION_ROAMING_POLICY_DEFAULT;
+       config->type = CONNMAN_SESSION_TYPE_ANY;
+       config->ecall = FALSE;
+
+       g_slist_free(config->allowed_bearers);
+       config->allowed_bearers = g_slist_prepend(NULL,
+                               GINT_TO_POINTER(CONNMAN_SERVICE_TYPE_UNKNOWN));
+       if (config->allowed_bearers == NULL)
+               return -ENOMEM;
+
+       return 0;
+}
+
 struct connman_session_config *connman_session_create_default_config(void)
 {
        struct connman_session_config *config;
@@ -360,13 +376,7 @@ struct connman_session_config *connman_session_create_default_config(void)
        if (config == NULL)
                return NULL;
 
-       config->priority = FALSE;
-       config->roaming_policy = CONNMAN_SESSION_ROAMING_POLICY_DEFAULT;
-       config->type = CONNMAN_SESSION_TYPE_ANY;
-       config->ecall = FALSE;
-       config->allowed_bearers = g_slist_prepend(NULL,
-                               GINT_TO_POINTER(CONNMAN_SERVICE_TYPE_UNKNOWN));
-       if (config->allowed_bearers == NULL) {
+       if (connman_session_set_default_config(config) < 0) {
                g_free(config);
                return NULL;
        }