From 6889e5dc0fe6ed160aee2b798717a50b8aa0afc0 Mon Sep 17 00:00:00 2001 From: mom040267 Date: Fri, 24 Oct 2014 06:05:04 +0000 Subject: [PATCH] TCP fixes --- ChangeLog | 1 + src/apps/relay/netengine.c | 17 ++++------------- src/apps/relay/ns_ioalib_engine_impl.c | 12 ++++++------ src/apps/relay/turncli.c | 7 ++----- 4 files changed, 13 insertions(+), 24 deletions(-) diff --git a/ChangeLog b/ChangeLog index 05c32ec..526c68a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,7 @@ Version 4.2.1.4 'Monza': - TCP/TLS tests extended. - relay RTCP sockets ports allocation fixed. - list of libraries cleaned. + - TCP bufferevent concurrency fixed. 10/05/2014 Oleg Moskalenko Version 4.2.1.2 'Monza': diff --git a/src/apps/relay/netengine.c b/src/apps/relay/netengine.c index a63bc3c..4e057f5 100644 --- a/src/apps/relay/netengine.c +++ b/src/apps/relay/netengine.c @@ -1005,11 +1005,8 @@ static void setup_listener(void) { struct bufferevent *pair[2]; - int opts = BEV_OPT_DEFER_CALLBACKS | BEV_OPT_UNLOCK_CALLBACKS; - opts |= BEV_OPT_THREADSAFE; - - bufferevent_pair_new(turn_params.listener.event_base, opts, pair); + bufferevent_pair_new(turn_params.listener.event_base, BEV_OPT_DEFER_CALLBACKS | BEV_OPT_THREADSAFE, pair); turn_params.listener.in_buf = pair[0]; turn_params.listener.out_buf = pair[1]; bufferevent_setcb(turn_params.listener.in_buf, listener_receive_message, NULL, NULL, &turn_params.listener); @@ -1548,7 +1545,6 @@ void run_listener_server(struct listener_server *ls) static void setup_relay_server(struct relay_server *rs, ioa_engine_handle e, int to_set_rfc5780) { struct bufferevent *pair[2]; - int opts = BEV_OPT_DEFER_CALLBACKS | BEV_OPT_UNLOCK_CALLBACKS; if(e) { rs->event_base = e->event_base; @@ -1573,15 +1569,13 @@ static void setup_relay_server(struct relay_server *rs, ioa_engine_handle e, int ioa_engine_set_rtcp_map(rs->ioa_eng, turn_params.listener.rtcpmap); } - opts |= BEV_OPT_THREADSAFE; - - bufferevent_pair_new(rs->event_base, opts, pair); + bufferevent_pair_new(rs->event_base, BEV_OPT_DEFER_CALLBACKS | BEV_OPT_THREADSAFE, pair); rs->in_buf = pair[0]; rs->out_buf = pair[1]; bufferevent_setcb(rs->in_buf, relay_receive_message, NULL, NULL, rs); bufferevent_enable(rs->in_buf, EV_READ); - bufferevent_pair_new(rs->event_base, opts, pair); + bufferevent_pair_new(rs->event_base, BEV_OPT_DEFER_CALLBACKS | BEV_OPT_THREADSAFE, pair); rs->auth_in_buf = pair[0]; rs->auth_out_buf = pair[1]; bufferevent_setcb(rs->auth_in_buf, relay_receive_auth_message, NULL, NULL, rs); @@ -1683,11 +1677,8 @@ static void* run_auth_server_thread(void *arg) TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO,"IO method (auth thread): %s\n",event_base_get_method(turn_params.authserver.event_base)); struct bufferevent *pair[2]; - int opts = BEV_OPT_DEFER_CALLBACKS | BEV_OPT_UNLOCK_CALLBACKS; - opts |= BEV_OPT_THREADSAFE; - - bufferevent_pair_new(turn_params.authserver.event_base, opts, pair); + bufferevent_pair_new(turn_params.authserver.event_base, BEV_OPT_DEFER_CALLBACKS | BEV_OPT_THREADSAFE, pair); turn_params.authserver.in_buf = pair[0]; turn_params.authserver.out_buf = pair[1]; bufferevent_setcb(turn_params.authserver.in_buf, auth_server_receive_message, NULL, NULL, &turn_params.authserver); diff --git a/src/apps/relay/ns_ioalib_engine_impl.c b/src/apps/relay/ns_ioalib_engine_impl.c index b503f9b..41d2274 100644 --- a/src/apps/relay/ns_ioalib_engine_impl.c +++ b/src/apps/relay/ns_ioalib_engine_impl.c @@ -1369,7 +1369,7 @@ ioa_socket_handle ioa_create_connecting_tcp_relay_socket(ioa_socket_handle s, io ret->conn_bev = bufferevent_socket_new(ret->e->event_base, ret->fd, - BEV_OPT_THREADSAFE | BEV_OPT_DEFER_CALLBACKS | BEV_OPT_UNLOCK_CALLBACKS); + BEV_OPT_DEFER_CALLBACKS | BEV_OPT_THREADSAFE); debug_ptr_add(ret->conn_bev); bufferevent_setcb(ret->conn_bev, NULL, NULL, connect_eventcb, ret); @@ -2394,7 +2394,7 @@ static int socket_input_worker(ioa_socket_handle s) s->fd, s->ssl, BUFFEREVENT_SSL_ACCEPTING, - BEV_OPT_THREADSAFE | BEV_OPT_DEFER_CALLBACKS | BEV_OPT_UNLOCK_CALLBACKS); + BEV_OPT_DEFER_CALLBACKS | BEV_OPT_THREADSAFE); debug_ptr_add(s->bev); bufferevent_setcb(s->bev, socket_input_handler_bev, socket_output_handler_bev, eventcb_bev, s); @@ -2410,7 +2410,7 @@ static int socket_input_worker(ioa_socket_handle s) } s->bev = bufferevent_socket_new(s->e->event_base, s->fd, - BEV_OPT_THREADSAFE | BEV_OPT_DEFER_CALLBACKS | BEV_OPT_UNLOCK_CALLBACKS); + BEV_OPT_DEFER_CALLBACKS | BEV_OPT_THREADSAFE); debug_ptr_add(s->bev); bufferevent_setcb(s->bev, socket_input_handler_bev, socket_output_handler_bev, eventcb_bev, s); @@ -3235,7 +3235,7 @@ int register_callback_on_ioa_socket(ioa_engine_handle e, ioa_socket_handle s, in } else { s->bev = bufferevent_socket_new(s->e->event_base, s->fd, - BEV_OPT_THREADSAFE | BEV_OPT_DEFER_CALLBACKS | BEV_OPT_UNLOCK_CALLBACKS); + BEV_OPT_DEFER_CALLBACKS | BEV_OPT_THREADSAFE); debug_ptr_add(s->bev); bufferevent_setcb(s->bev, socket_input_handler_bev, socket_output_handler_bev, eventcb_bev, s); @@ -3260,14 +3260,14 @@ int register_callback_on_ioa_socket(ioa_engine_handle e, ioa_socket_handle s, in s->fd, s->ssl, BUFFEREVENT_SSL_ACCEPTING, - BEV_OPT_THREADSAFE | BEV_OPT_DEFER_CALLBACKS | BEV_OPT_UNLOCK_CALLBACKS); + BEV_OPT_DEFER_CALLBACKS | BEV_OPT_THREADSAFE); debug_ptr_add(s->bev); } else { s->bev = bufferevent_openssl_socket_new(s->e->event_base, s->fd, s->ssl, BUFFEREVENT_SSL_OPEN, - BEV_OPT_THREADSAFE | BEV_OPT_DEFER_CALLBACKS | BEV_OPT_UNLOCK_CALLBACKS); + BEV_OPT_DEFER_CALLBACKS | BEV_OPT_THREADSAFE); debug_ptr_add(s->bev); } bufferevent_setcb(s->bev, socket_input_handler_bev, socket_output_handler_bev, diff --git a/src/apps/relay/turncli.c b/src/apps/relay/turncli.c index f7ac802..6012279 100644 --- a/src/apps/relay/turncli.c +++ b/src/apps/relay/turncli.c @@ -1169,7 +1169,7 @@ static void cliserver_input_handler(struct evconnlistener *l, evutil_socket_t fd clisession->bev = bufferevent_socket_new(cliserver.event_base, fd, - BEV_OPT_THREADSAFE | BEV_OPT_DEFER_CALLBACKS | BEV_OPT_UNLOCK_CALLBACKS); + BEV_OPT_DEFER_CALLBACKS | BEV_OPT_THREADSAFE); debug_ptr_add(clisession->bev); bufferevent_setcb(clisession->bev, cli_socket_input_handler_bev, NULL, cli_eventcb_bev, clisession); @@ -1201,11 +1201,8 @@ void setup_cli_thread(void) TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO,"IO method (cli thread): %s\n",event_base_get_method(cliserver.event_base)); struct bufferevent *pair[2]; - int opts = BEV_OPT_DEFER_CALLBACKS | BEV_OPT_UNLOCK_CALLBACKS; - opts |= BEV_OPT_THREADSAFE; - - bufferevent_pair_new(cliserver.event_base, opts, pair); + bufferevent_pair_new(cliserver.event_base, BEV_OPT_DEFER_CALLBACKS | BEV_OPT_THREADSAFE, pair); cliserver.in_buf = pair[0]; cliserver.out_buf = pair[1]; bufferevent_setcb(cliserver.in_buf, cli_server_receive_message, NULL, NULL, &cliserver);