session: Only disconnect online sevices
authorDaniel Wagner <daniel.wagner@bmw-carit.de>
Wed, 14 Sep 2011 13:54:38 +0000 (15:54 +0200)
committerDaniel Wagner <daniel.wagner@bmw-carit.de>
Mon, 19 Sep 2011 08:44:15 +0000 (10:44 +0200)
Fixes BMC#22827

src/session.c

index 187db48..45770ed 100644 (file)
@@ -782,13 +782,16 @@ static void test_and_disconnect(struct connman_session *session)
 {
        struct session_info *info = session->info;
        struct connman_service *service;
-       connman_bool_t disconnect;
+       connman_bool_t disconnect, online;
 
        if (info->entry == NULL)
                return;
 
        disconnect = explicit_disconnect(session);
 
+       online = is_connecting(info->entry->state) == TRUE ||
+                       is_online(info->entry->state) == TRUE;
+
        info->online = FALSE;
        info->reason = CONNMAN_SESSION_REASON_UNKNOWN;
        info->entry->reason = CONNMAN_SESSION_REASON_UNKNOWN;
@@ -796,7 +799,7 @@ static void test_and_disconnect(struct connman_session *session)
        service = info->entry->service;
        info->entry = NULL;
 
-       if (disconnect == TRUE)
+       if (disconnect == TRUE && online == TRUE)
                g_timeout_add_seconds(0, call_disconnect, service);
 }