summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/service.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/service.c b/src/service.c
index 5c4379b4..47ba5074 100644
--- a/src/service.c
+++ b/src/service.c
@@ -435,6 +435,24 @@ static connman_bool_t is_connecting(struct connman_service *service)
return FALSE;
}
+static struct connman_service *find_pending_service(void)
+{
+ struct connman_service *service;
+ GSequenceIter *iter;
+
+ 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 +460,10 @@ static void __connman_service_auto_connect(void)
DBG("");
+ service = find_pending_service();
+ if (service != NULL)
+ return;
+
iter = g_sequence_get_begin_iter(service_list);
if (g_sequence_iter_is_end(iter) == TRUE)
return;