Marcel:
In order to convenient the review and merge, I split the auto-connection patch 
into 4 small patches. Please review.

>From e6ce9cb481fd1fd108ce19e1cebef39a47d4ea46 Mon Sep 17 00:00:00 2001
From: Martin Xu <[email protected]>
Date: Mon, 6 Jul 2009 01:17:39 -0400
Subject: [PATCH 1/4] add check READY state at connect_timeout function at 
service.c

---
 src/service.c |   26 +++++++++++++++++++++-----
 1 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/src/service.c b/src/service.c
index 0b435a3..71e57de 100644
--- a/src/service.c
+++ b/src/service.c
@@ -425,8 +425,27 @@ static gboolean connect_timeout(gpointer user_data)
 
        service->timeout = 0;
 
-       if (service->network != NULL)
-               __connman_network_disconnect(service->network);
+       if (service->network != NULL) {
+               if (connman_network_get_connected(service->network)) {
+                       __connman_service_indicate_state(service,
+                                       CONNMAN_SERVICE_STATE_READY);
+                       service->pending = NULL;
+               } else {
+                       __connman_network_disconnect(service->network);
+                       __connman_service_indicate_state(service,
+                                               CONNMAN_SERVICE_STATE_FAILURE);
+               }
+       } else if (service->device != NULL) {
+               if (!connman_device_get_disconnected(service->device)) {
+                       __connman_service_indicate_state(service,
+                                       CONNMAN_SERVICE_STATE_READY);
+                       service->pending = NULL;
+               } else {
+                       __connman_device_disconnect(service->device);
+                       __connman_service_indicate_state(service,
+                                               CONNMAN_SERVICE_STATE_FAILURE);
+               }
+       }
 
        if (service->pending != NULL) {
                DBusMessage *reply;
@@ -437,9 +456,6 @@ static gboolean connect_timeout(gpointer user_data)
 
                dbus_message_unref(service->pending);
                service->pending = NULL;
-
-               __connman_service_indicate_state(service,
-                                       CONNMAN_SERVICE_STATE_FAILURE);
        }
 
        return FALSE;
-- 
1.6.1.3

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

Reply via email to