session: Do not select ongoing service again
authorDaniel Wagner <daniel.wagner@bmw-carit.de>
Mon, 17 Oct 2011 13:50:17 +0000 (15:50 +0200)
committerSamuel Ortiz <sameo@linux.intel.com>
Thu, 20 Oct 2011 22:28:35 +0000 (00:28 +0200)
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

src/session.c

index 990caea..384714f 100644 (file)
@@ -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);