From: Patrik Flykt <[email protected]>

Factor out the creation of a service when given a provider.
---
 src/provider.c |   31 +++++++++++++++++++++----------
 1 files changed, 21 insertions(+), 10 deletions(-)

diff --git a/src/provider.c b/src/provider.c
index d86c44a..93abc18 100644
--- a/src/provider.c
+++ b/src/provider.c
@@ -551,6 +551,20 @@ static void provider_dbus_ident(char *ident)
        }
 }
 
+static int provider_create_service(struct connman_provider *provider)
+{
+       if (provider->vpn_service != NULL)
+               return -EALREADY;
+
+       provider->vpn_service =
+               __connman_service_create_from_provider(provider);
+
+       if (provider->vpn_service == NULL)
+               return -EOPNOTSUPP;
+
+       return 0;
+}
+
 int __connman_provider_create_and_connect(DBusMessage *msg)
 {
        struct connman_provider *provider;
@@ -644,19 +658,16 @@ int __connman_provider_create_and_connect(DBusMessage 
*msg)
 
        g_free(ident);
 
-       if (provider->vpn_service == NULL) {
-               provider->vpn_service =
-                       __connman_service_create_from_provider(provider);
-               if (provider->vpn_service == NULL) {
-                       err = -EOPNOTSUPP;
-                       goto unref;
-               }
-
+       err = provider_create_service(provider);
+       if (err == -EALREADY)
+               DBG("provider already connected");              
+       else if (err == -EOPNOTSUPP)
+               goto unref;
+       else {
                err = __connman_service_connect(provider->vpn_service);
                if (err < 0 && err != -EINPROGRESS)
                        goto failed;
-       } else
-               DBG("provider already connected");
+       }
 
        connman_provider_save(provider);
        service_path = __connman_service_get_path(provider->vpn_service);
-- 
1.7.2.5

_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman

Reply via email to