Hi Pekka,

On Mon, Jan 24, 2011 at 07:55:38PM +0200, pekka.pe...@nokia.com wrote:
> From: Pekka Pessi <pekka.pe...@nokia.com>
> 
> The connman_network/provider_connect() could fail in two different ways,
> returning an error code or setting the service state to failed.
> 
> Ethernet, WiMax, Bluetooth, VPN, Cellular and WiFi services now get
> marked as failed if connect() fails with error code, too. This makes
> connman_service_clear_error() and the autoconnect procedure to behave in
> consistent manner.
> ---
>  src/service.c |   64 
> +++++++++++++++++++++++++++++++++++++++++----------------
>  1 files changed, 46 insertions(+), 18 deletions(-)
> 
> diff --git a/src/service.c b/src/service.c
> index 3a4260a..2b9bbef 100644
> --- a/src/service.c
> +++ b/src/service.c
> @@ -2420,6 +2420,9 @@ static DBusMessage *connect_service(DBusConnection 
> *conn,
>                               return NULL;
>               }
>  
> +             if (service->pending == NULL)
> +                     return NULL;
> +
Not sure how this could happen (pending == NULL), but it doesn't hurt to
check.


>               if (err != -EINPROGRESS) {
>                       dbus_message_unref(service->pending);
>                       service->pending = NULL;
> @@ -3319,18 +3322,10 @@ static void prepare_8021x(struct connman_service 
> *service)
>                                                       service->phase2);
>  }
>  
> -int __connman_service_connect(struct connman_service *service)
> +static int service_connect(struct connman_service *service)
>  {
>       int err;
>  
> -     DBG("service %p", service);
> -
> -     if (is_connected(service) == TRUE)
> -             return -EISCONN;
> -
> -     if (is_connecting(service) == TRUE)
> -             return -EALREADY;
> -
>       switch (service->type) {
>       case CONNMAN_SERVICE_TYPE_UNKNOWN:
>       case CONNMAN_SERVICE_TYPE_SYSTEM:
> @@ -3396,7 +3391,7 @@ int __connman_service_connect(struct connman_service 
> *service)
>               err = __connman_network_connect(service->network);
>       } else if (service->type == CONNMAN_SERVICE_TYPE_VPN &&
>                                       service->provider != NULL)
> -             err = __connman_provider_connect(service->provider);
> +             return __connman_provider_connect(service->provider);
We don't want to return here.

The rest looks fine.

Cheers,
Samuel.

-- 
Intel Open Source Technology Centre
http://oss.intel.com/
_______________________________________________
connman mailing list
connman@connman.net
http://lists.connman.net/listinfo/connman

Reply via email to