From 9174961875c24e615fcc0996dbfca06837f2dbe8 Mon Sep 17 00:00:00 2001 From: mom040267 Date: Tue, 22 Apr 2014 00:51:34 +0000 Subject: [PATCH] more fixes for Issue 123 --- src/apps/relay/ns_ioalib_engine_impl.c | 33 ++++++-------------------- 1 file changed, 7 insertions(+), 26 deletions(-) diff --git a/src/apps/relay/ns_ioalib_engine_impl.c b/src/apps/relay/ns_ioalib_engine_impl.c index 02da6b0..5d99cda 100644 --- a/src/apps/relay/ns_ioalib_engine_impl.c +++ b/src/apps/relay/ns_ioalib_engine_impl.c @@ -2654,9 +2654,12 @@ static void socket_input_handler_bev(struct bufferevent *bev, void* arg) return; } - while (!ioa_socket_tobeclosed(s)) { - if (socket_input_worker(s) <= 0) - break; + { + size_t cycle = 0; + while (!ioa_socket_tobeclosed(s) && (cycle++<1024)) { + if (socket_input_worker(s) <= 0) + break; + } } if((s->magic != SOCKET_MAGIC)||(s->done)) { @@ -2665,29 +2668,7 @@ static void socket_input_handler_bev(struct bufferevent *bev, void* arg) return; } - if (ioa_socket_tobeclosed(s)) { - switch(s->sat) { - case TCP_CLIENT_DATA_SOCKET: - case TCP_RELAY_DATA_SOCKET: - { - tcp_connection *tc = s->sub_session; - if(tc) { - delete_tcp_connection(tc); - } - } - break; - default: - { - ts_ur_super_session *ss = s->session; - if (ss) { - turn_turnserver *server = (turn_turnserver *)ss->server; - if (server) { - shutdown_client_connection(server, ss, 0, "TCP socket buffer operation error (input handler)"); - } - } - } - } - } + close_ioa_socket_after_processing_if_necessary(s); } }