agent: Assert on re-entrant reads
authorPhilip Withnall <philip.withnall@collabora.co.uk>
Fri, 31 Jan 2014 11:43:19 +0000 (11:43 +0000)
committerOlivier Crête <olivier.crete@collabora.com>
Mon, 24 Feb 2014 21:03:59 +0000 (16:03 -0500)
Ensure the agent’s context doesn’t get iterated while in the middle of
reading a message, as that will corrupt the component->recv_messages
state.

agent/agent.c

index 285e3b7..2a0e429 100644 (file)
@@ -3127,6 +3127,10 @@ nice_agent_recv_messages_blocking_or_nonblocking (NiceAgent *agent,
       blocking ? "blocking" : "non-blocking");
   nice_debug_input_message_composition (messages, n_messages);
 
+  /* Disallow re-entrant reads. */
+  g_assert (component->n_recv_messages == 0 &&
+      component->recv_messages == NULL);
+
   /* Set the component’s receive buffer. */
   context = component_dup_io_context (component);
   component_set_io_callback (component, NULL, NULL, messages, n_messages,