diff options
author | Daniel Wagner <daniel.wagner@bmw-carit.de> | 2011-10-17 15:50:17 +0200 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2011-10-21 00:28:35 +0200 |
commit | 3dc085c888225047f6b266bbf883b8dc88e4752c (patch) | |
tree | 5dd6007899eb67b2118bb9f5e68f5038f8221902 /src/session.c | |
parent | ea36c339dea11aeaf065df5f95a0d5bb6bcdf0e4 (diff) | |
download | connman-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.c | 5 |
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); |