Hi Marcel:
The auto-scan should not be triggered when user manually connecting a service.
So if there is pending service, the auto-scan will be stopped.

>From dbd9237458a4051881c0d0844500eac4c837cf20 Mon Sep 17 00:00:00 2001
From: Martin Xu <[email protected]>
Date: Wed, 8 Jul 2009 07:13:58 -0400
Subject: [PATCH 2/5] do not auto-connect when service is pending

---
 src/service.c |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+), 0 deletions(-)

diff --git a/src/service.c b/src/service.c
index 06e8551..ca7c1d3 100644
--- a/src/service.c
+++ b/src/service.c
@@ -435,6 +435,20 @@ static connman_bool_t is_connecting(struct connman_service 
*service)
        return FALSE;
 }
 
+static struct connman_service *find_pending_service(void)
+{
+       GSequenceIter *iter;
+       struct connman_service *service;
+       iter = g_sequence_get_begin_iter(service_list);
+       while (g_sequence_iter_is_end(iter) == FALSE) {
+               service = g_sequence_get(iter);
+               if (service->pending != NULL)
+                               return service;
+               iter = g_sequence_iter_next(iter);
+       }
+       return NULL;
+}
+
 static void __connman_service_auto_connect(void)
 {
        struct connman_service *service;
@@ -442,6 +456,12 @@ static void __connman_service_auto_connect(void)
 
        DBG("");
 
+       service = find_pending_service();
+       if (service != NULL) {
+               DBG("find pending service: %p", service);
+               return;
+       }
+
        iter = g_sequence_get_begin_iter(service_list);
        if (g_sequence_iter_is_end(iter) == TRUE)
                return;
-- 
1.6.1.3

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

Reply via email to