summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Wagner <daniel.wagner@bmw-carit.de>2011-10-17 15:50:17 +0200
committerSamuel Ortiz <sameo@linux.intel.com>2011-10-21 00:28:35 +0200
commit3dc085c888225047f6b266bbf883b8dc88e4752c (patch)
tree5dd6007899eb67b2118bb9f5e68f5038f8221902
parentea36c339dea11aeaf065df5f95a0d5bb6bcdf0e4 (diff)
downloadconnman-3dc085c888225047f6b266bbf883b8dc88e4752c.tar.gz
connman-3dc085c888225047f6b266bbf883b8dc88e4752c.tar.bz2
connman-3dc085c888225047f6b266bbf883b8dc88e4752c.zip
session: Do not select ongoing service again
In case Session.Connect() is called several times while the selected services is still going from the IDLE state to ONLINE state (or error state), do not call select_and_connect() again. This leads to an inconsistent ref counting on the service. Fixes BMC#23630
-rw-r--r--src/session.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/session.c b/src/session.c
index 990caea3..384714f6 100644
--- a/src/session.c
+++ b/src/session.c
@@ -1038,6 +1038,11 @@ static void session_changed(struct connman_session *session,
break;
}
+ if (info->entry != NULL &&
+ is_connecting(info->entry->state) == TRUE) {
+ break;
+ }
+
select_and_connect(session,
CONNMAN_SESSION_REASON_CONNECT);