From: Patrik Flykt Date: Wed, 25 Jan 2012 11:49:42 +0000 (+0200) Subject: provider: Factor out service creation X-Git-Tag: 0.79~139 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=aba4ca9ea9a9ea1626883b72649498b91ba33fb4;p=platform%2Fupstream%2Fconnman.git provider: Factor out service creation Factor out the creation of a service when given a provider. --- diff --git a/src/provider.c b/src/provider.c index 1f95282..baa3c9b 100644 --- a/src/provider.c +++ b/src/provider.c @@ -557,6 +557,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; @@ -650,19 +664,19 @@ 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; + 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); - err = __connman_service_connect(provider->vpn_service); - if (err < 0 && err != -EINPROGRESS) - goto failed; - } else - DBG("provider already connected"); + if (err < 0 && err != -EINPROGRESS) + goto failed; + } + } connman_provider_save(provider); service_path = __connman_service_get_path(provider->vpn_service);