summaryrefslogtreecommitdiff
path: root/src/session.c
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 /src/session.c
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
Diffstat (limited to 'src/session.c')
-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);