agent: Declare the stream to be CONNECTED only if a pair is selected
authorOlivier Crête <olivier.crete@collabora.com>
Thu, 31 Jul 2014 19:16:38 +0000 (15:16 -0400)
committerOlivier Crête <olivier.crete@collabora.com>
Thu, 9 Oct 2014 19:28:21 +0000 (15:28 -0400)
Don't change the state if no pair is selected. Otherwise we get
a component that claims to be CONNECTED but has no selected pair.
Also, set the selected pair before announcing the state change.

agent/conncheck.c

index 3722947..0fcfb16 100644 (file)
@@ -2369,20 +2369,20 @@ static gboolean priv_map_reply_to_conn_check_request (NiceAgent *agent, Stream *
           if (!ok_pair)
             ok_pair = p;
 
-          /* Do not step down to CONNECTED if we're already at state READY*/
-          if (component->state != NICE_COMPONENT_STATE_READY) {
-            /* step: notify the client of a new component state (must be done
-             *       before the possible check list state update step */
-            agent_signal_component_state_change (agent,
-                stream->id, component->id, NICE_COMPONENT_STATE_CONNECTED);
-          }
-
-
           /* step: updating nominated flag (ICE 7.1.2.2.4 "Updating the
              Nominated Flag" (ID-19) */
-          if (ok_pair->nominated == TRUE)
+          if (ok_pair->nominated == TRUE) {
             priv_update_selected_pair (agent, component, ok_pair);
 
+            /* Do not step down to CONNECTED if we're already at state READY*/
+            if (component->state != NICE_COMPONENT_STATE_READY) {
+              /* step: notify the client of a new component state (must be done
+               *       before the possible check list state update step */
+              agent_signal_component_state_change (agent,
+                  stream->id, component->id, NICE_COMPONENT_STATE_CONNECTED);
+            }
+          }
+
           /* step: update pair states (ICE 7.1.2.2.3 "Updating pair
              states" and 8.1.2 "Updating States", ID-19) */
           priv_update_check_list_state_for_ready (agent, stream, component);