Sessions can start up in connected state, they do not need to signal a
disconnection as first step.

When session0 disconnects, it should not affect session1.
---
 tools/session-test.c |   18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/tools/session-test.c b/tools/session-test.c
index 4101a3d..18fd588 100644
--- a/tools/session-test.c
+++ b/tools/session-test.c
@@ -278,6 +278,10 @@ static void test_session_connect_disconnect_notify(struct 
test_session *session)
        case TEST_SESSION_STATE_0:
                if (session->info->state == CONNMAN_SESSION_STATE_DISCONNECTED)
                        next_state = TEST_SESSION_STATE_1;
+               if (session->info->state == CONNMAN_SESSION_STATE_CONNECTED) {
+                       LOG("state was already connected, continuing");
+                       next_state = TEST_SESSION_STATE_2;
+               }
                break;
        case TEST_SESSION_STATE_1:
                if (session->info->state >= CONNMAN_SESSION_STATE_CONNECTED)
@@ -369,6 +373,12 @@ static void test_session_connect_free_ride_notify(struct 
test_session *session)
                                        CONNMAN_SESSION_STATE_DISCONNECTED) {
                        next_state = TEST_SESSION_STATE_1;
                }
+               if (session0->info->state == CONNMAN_SESSION_STATE_CONNECTED &&
+                               session1->info->state ==
+                               CONNMAN_SESSION_STATE_CONNECTED) {
+                       LOG("state was already connected, continuing");
+                       next_state = TEST_SESSION_STATE_2;
+               }
 
                break;
        case TEST_SESSION_STATE_1:
@@ -381,8 +391,12 @@ static void test_session_connect_free_ride_notify(struct 
test_session *session)
                break;
        case TEST_SESSION_STATE_2:
                if (session0->info->state == CONNMAN_SESSION_STATE_DISCONNECTED
-                               && session1->info->state ==
-                                       CONNMAN_SESSION_STATE_DISCONNECTED) {
+                               && (session1->info->state ==
+                                       CONNMAN_SESSION_STATE_DISCONNECTED ||
+                                               session1->info->state ==
+                                       CONNMAN_SESSION_STATE_CONNECTED) ) {
+                       LOG("session0 /foo is disconnected, session1 /bar "
+                               "can be either connected or disconnected");
                        next_state = TEST_SESSION_STATE_3;
                }
 
-- 
1.7.10.4

_______________________________________________
connman mailing list
connman@connman.net
https://lists.connman.net/mailman/listinfo/connman

Reply via email to