conncheck: the conncheck send function may fail
authorFabrice Bellet <fabrice@bellet.info>
Sun, 26 Nov 2017 16:49:25 +0000 (17:49 +0100)
committerOlivier Crête <olivier.crete@collabora.com>
Fri, 23 Mar 2018 17:56:15 +0000 (13:56 -0400)
With this patch, we put the pair in state failed if we cannot send
the connection check, for example due to missing local credentials.

Reviewed-by: Olivier Crête <olivier.crete@collabora.com>
Differential Revision: https://phabricator.freedesktop.org/D1891

agent/conncheck.c

index 11ef9c9..9618c3a 100644 (file)
@@ -442,7 +442,11 @@ static gboolean priv_conn_check_initiate (NiceAgent *agent, CandidateCheckPair *
 {
   pair->state = NICE_CHECK_IN_PROGRESS;
   nice_debug ("Agent %p : pair %p state IN_PROGRESS", agent, pair);
-  conn_check_send (agent, pair);
+  if (conn_check_send (agent, pair)) {
+    pair->state = NICE_CHECK_FAILED;
+    nice_debug ("Agent %p : pair %p state FAILED", agent, pair);
+    return FALSE;
+  }
   return TRUE;
 }
 
@@ -1070,7 +1074,11 @@ static gboolean priv_conn_check_tick_unlocked (NiceAgent *agent)
   if (pair) {
     priv_print_conn_check_lists (agent, G_STRFUNC,
         ", got a pair from triggered check list");
-    conn_check_send (agent, pair);
+    if (conn_check_send (agent, pair)) {
+      pair->state = NICE_CHECK_FAILED;
+      nice_debug ("Agent %p : pair %p state FAILED", agent, pair);
+      return FALSE;
+    }
     return TRUE;
   }