From ff88e68262afa40796e6efe71d3793ba1a1c4f5e Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Fri, 17 Jul 2009 18:37:28 +0200 Subject: [PATCH] Ensure only one service connection attempt at a time --- src/service.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/service.c b/src/service.c index 09963d2..fc2ff87 100644 --- a/src/service.c +++ b/src/service.c @@ -577,6 +577,7 @@ static DBusMessage *connect_service(DBusConnection *conn, DBusMessage *msg, void *user_data) { struct connman_service *service = user_data; + GSequenceIter *iter; int err; DBG("service %p", service); @@ -584,6 +585,17 @@ static DBusMessage *connect_service(DBusConnection *conn, if (service->pending != NULL) return __connman_error_in_progress(msg); + iter = g_sequence_get_begin_iter(service_list); + + while (g_sequence_iter_is_end(iter) == FALSE) { + struct connman_service *service = g_sequence_get(iter); + + if (is_connecting(service) == TRUE) + return __connman_error_in_progress(msg); + + iter = g_sequence_iter_next(iter); + } + service->ignore = FALSE; service->pending = dbus_message_ref(msg); -- 2.7.4