session: Simplefy session_changed()
authorDaniel Wagner <daniel.wagner@bmw-carit.de>
Tue, 20 Sep 2011 15:05:32 +0000 (17:05 +0200)
committerDaniel Wagner <daniel.wagner@bmw-carit.de>
Thu, 22 Sep 2011 13:45:50 +0000 (15:45 +0200)
Since we are tracking the reason code now also in
the deslect_and_disconnect() function we can rely
on the correct handling there. Also no need to parse the
reason code again.

src/session.c

index 7066eb0..f798056 100644 (file)
@@ -972,43 +972,13 @@ static void session_changed(struct connman_session *session,
                        break;
                }
 
-               switch (info->reason) {
-               case CONNMAN_SESSION_REASON_CONNECT:
-                       /*
-                        * We are not online, we are not connecting, that
-                        * means we could still have a valid info->entry.
-                        * Though something has changed from the service layer.
-                        * Therefore we want to restart the algorithm. Before we
-                        * can do that we have to cleanup a potientional old entry.
-                        */
-                       deselect_and_disconnect(session,
-                                               CONNMAN_SESSION_REASON_CONNECT);
-
-                       DBG("Retry to find a matching session");
-                       /*
-                        * The user called Connect() but there was no
-                        * matching session available at this point.
-                        * Now there might be a new one. Let's retry
-                        * to select and connect
-                        */
-                       select_and_connect(session,
-                                       CONNMAN_SESSION_REASON_CONNECT);
-                       break;
-               case CONNMAN_SESSION_REASON_PERIODIC:
-               case CONNMAN_SESSION_REASON_FREE_RIDE:
-                       if (info->stay_connected == TRUE) {
-                               DBG("StayConnected");
-                               select_and_connect(session,
-                                       CONNMAN_SESSION_REASON_CONNECT);
-                       } else {
-                               select_and_connect(session,
-                                       CONNMAN_SESSION_REASON_FREE_RIDE);
-                       }
-                       break;
-               case CONNMAN_SESSION_REASON_DISCONNECT:
-               case CONNMAN_SESSION_REASON_UNKNOWN:
-                       break;
+               deselect_and_disconnect(session, info->reason);
+
+               if (info->reason == CONNMAN_SESSION_REASON_FREE_RIDE ||
+                               info->stay_connected == TRUE) {
+                       select_and_connect(session, info->reason);
                }
+
                break;
        case CONNMAN_SESSION_TRIGGER_ECALL:
                if (info->online == FALSE && info->entry != NULL &&