diff options
author | Olivier Crête <olivier.crete@collabora.com> | 2014-08-09 16:18:33 -0400 |
---|---|---|
committer | Olivier Crête <olivier.crete@collabora.com> | 2014-10-09 15:28:21 -0400 |
commit | 6fb00faadbe51d3ca4080cc48292950e7f7c7962 (patch) | |
tree | d6cbe9bf0ff259cd18e12c03d8565dfe43e9f0c9 /agent | |
parent | fcb1b84fd81f7db7dfe25bad824cb7fcfb254469 (diff) | |
download | libnice-6fb00faadbe51d3ca4080cc48292950e7f7c7962.tar.gz |
agent: Remove socket source on HUP
Diffstat (limited to 'agent')
-rw-r--r-- | agent/agent.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/agent/agent.c b/agent/agent.c index 86421d8..ba92496 100644 --- a/agent/agent.c +++ b/agent/agent.c @@ -4645,6 +4645,24 @@ component_io_cb (GSocket *gsocket, GIOCondition condition, gpointer user_data) g_object_ref (agent); + /* Remove disconnected sockets when we get a HUP */ + if (condition & G_IO_HUP) { + nice_debug ("Agent %p: NiceSocket %p has received HUP", agent, + socket_source->socket); + if (component->selected_pair.local && + component->selected_pair.local->sockptr == socket_source->socket && + component->state == NICE_COMPONENT_STATE_READY) { + nice_debug ("Agent %p: Selected pair socket %p has HUP, declaring failed", + agent, socket_source->socket); + agent_signal_component_state_change (agent, + stream->id, component->id, NICE_COMPONENT_STATE_FAILED); + } + + component_detach_socket (component, socket_source->socket); + agent_unlock (); + return G_SOURCE_REMOVE; + } + has_io_callback = component_has_io_callback (component); /* Choose which receive buffer to use. If we’re reading for |