From 91cafd9f1ab016815f4c7370fc33e958a5c1e22c Mon Sep 17 00:00:00 2001 From: mom040267 Date: Sat, 17 Jan 2015 08:45:31 +0000 Subject: [PATCH] cosmetics --- src/apps/relay/netengine.c | 30 +++---- src/apps/relay/turn_admin_server.c | 130 ++++++++++++++--------------- src/apps/relay/turn_admin_server.h | 8 +- 3 files changed, 82 insertions(+), 86 deletions(-) diff --git a/src/apps/relay/netengine.c b/src/apps/relay/netengine.c index 7ae2d0e..fbb55a1 100644 --- a/src/apps/relay/netengine.c +++ b/src/apps/relay/netengine.c @@ -1773,33 +1773,33 @@ static void setup_auth_server(struct auth_server *as) pthread_detach(as->thr); } -static void* run_cli_server_thread(void *arg) +static void* run_admin_server_thread(void *arg) { ignore_sigpipe(); - setup_cli_thread(); + setup_admin_thread(); barrier_wait(); - while(cliserver.event_base) { - run_events(cliserver.event_base,NULL); + while(adminserver.event_base) { + run_events(adminserver.event_base,NULL); } return arg; } -static void setup_cli_server(void) +static void setup_admin_server(void) { - ns_bzero(&cliserver,sizeof(struct cli_server)); - cliserver.listen_fd = -1; - cliserver.verbose = turn_params.verbose; + ns_bzero(&adminserver,sizeof(struct admin_server)); + adminserver.listen_fd = -1; + adminserver.verbose = turn_params.verbose; - if(pthread_create(&(cliserver.thr), NULL, run_cli_server_thread, &cliserver)<0) { + if(pthread_create(&(adminserver.thr), NULL, run_admin_server_thread, &adminserver)<0) { perror("Cannot create cli thread\n"); exit(-1); } - pthread_detach(cliserver.thr); + pthread_detach(adminserver.thr); } void setup_server(void) @@ -1815,12 +1815,9 @@ void setup_server(void) #if !defined(TURN_NO_THREAD_BARRIERS) /* relay threads plus auth threads plus main listener thread */ + /* plus admin thread */ /* udp address listener thread(s) will start later */ - barrier_count = turn_params.general_relay_servers_number+authserver_number+1; - - if(use_cli) { - barrier_count += 1; - } + barrier_count = turn_params.general_relay_servers_number+authserver_number+1+1; #endif @@ -1867,8 +1864,7 @@ void setup_server(void) } } - if(use_cli) - setup_cli_server(); + setup_admin_server(); barrier_wait(); } diff --git a/src/apps/relay/turn_admin_server.c b/src/apps/relay/turn_admin_server.c index bf1b778..b77208e 100644 --- a/src/apps/relay/turn_admin_server.c +++ b/src/apps/relay/turn_admin_server.c @@ -72,7 +72,7 @@ /////////////////////////////// -struct cli_server cliserver; +struct admin_server adminserver; int use_cli = 1; @@ -594,7 +594,7 @@ static void print_sessions(struct cli_session* cs, const char* pn, int exact_mat arg.users = ur_string_map_create(NULL); } - ur_map_foreach_arg(cliserver.sessions, (foreachcb_arg_type)print_session, &arg); + ur_map_foreach_arg(adminserver.sessions, (foreachcb_arg_type)print_session, &arg); myprintf(cs,"\n"); @@ -891,7 +891,7 @@ static void close_cli_session(struct cli_session* cs) { if(cs) { - addr_debug_print(cliserver.verbose, &(cs->addr),"CLI session disconnected from"); + addr_debug_print(adminserver.verbose, &(cs->addr),"CLI session disconnected from"); if(cs->ts) { telnet_free(cs->ts); @@ -1170,7 +1170,7 @@ static void cliserver_input_handler(struct evconnlistener *l, evutil_socket_t fd UNUSED_ARG(arg); UNUSED_ARG(socklen); - addr_debug_print(cliserver.verbose, (ioa_addr*)sa,"CLI connected to"); + addr_debug_print(adminserver.verbose, (ioa_addr*)sa,"CLI connected to"); struct cli_session *clisession = (struct cli_session*)turn_malloc(sizeof(struct cli_session)); ns_bzero(clisession,sizeof(struct cli_session)); @@ -1183,7 +1183,7 @@ static void cliserver_input_handler(struct evconnlistener *l, evutil_socket_t fd addr_cpy(&(clisession->addr),(ioa_addr*)sa); - clisession->bev = bufferevent_socket_new(cliserver.event_base, + clisession->bev = bufferevent_socket_new(adminserver.event_base, fd, TURN_BUFFEREVENTS_OPTIONS); debug_ptr_add(clisession->bev); @@ -1196,7 +1196,7 @@ static void cliserver_input_handler(struct evconnlistener *l, evutil_socket_t fd if(!(clisession->ts)) { const char *str = "Cannot open telnet session\n"; - addr_debug_print(cliserver.verbose, (ioa_addr*)sa,str); + addr_debug_print(adminserver.verbose, (ioa_addr*)sa,str); close_cli_session(clisession); } else { print_str_array(clisession, CLI_GREETING_STR); @@ -1211,88 +1211,91 @@ static void cliserver_input_handler(struct evconnlistener *l, evutil_socket_t fd } } -void setup_cli_thread(void) +void setup_admin_thread(void) { - cliserver.event_base = turn_event_base_new(); + adminserver.event_base = turn_event_base_new(); super_memory_t* sm = new_super_memory_region(); - cliserver.e = create_ioa_engine(sm, cliserver.event_base, turn_params.listener.tp, turn_params.relay_ifname, turn_params.relays_number, turn_params.relay_addrs, + adminserver.e = create_ioa_engine(sm, adminserver.event_base, turn_params.listener.tp, turn_params.relay_ifname, turn_params.relays_number, turn_params.relay_addrs, turn_params.default_relays, turn_params.verbose #if !defined(TURN_NO_HIREDIS) ,turn_params.redis_statsdb #endif ); - TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO,"IO method (cli thread): %s\n",event_base_get_method(cliserver.event_base)); + + TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO,"IO method (admin thread): %s\n",event_base_get_method(adminserver.event_base)); { struct bufferevent *pair[2]; - bufferevent_pair_new(cliserver.event_base, TURN_BUFFEREVENTS_OPTIONS, pair); + bufferevent_pair_new(adminserver.event_base, TURN_BUFFEREVENTS_OPTIONS, pair); - cliserver.in_buf = pair[0]; - cliserver.out_buf = pair[1]; + adminserver.in_buf = pair[0]; + adminserver.out_buf = pair[1]; - bufferevent_setcb(cliserver.in_buf, cli_server_receive_message, NULL, NULL, &cliserver); - bufferevent_enable(cliserver.in_buf, EV_READ); + bufferevent_setcb(adminserver.in_buf, admin_server_receive_message, NULL, NULL, &adminserver); + bufferevent_enable(adminserver.in_buf, EV_READ); } { struct bufferevent *pair[2]; - bufferevent_pair_new(cliserver.event_base, TURN_BUFFEREVENTS_OPTIONS, pair); + bufferevent_pair_new(adminserver.event_base, TURN_BUFFEREVENTS_OPTIONS, pair); - cliserver.https_in_buf = pair[0]; - cliserver.https_out_buf = pair[1]; + adminserver.https_in_buf = pair[0]; + adminserver.https_out_buf = pair[1]; - bufferevent_setcb(cliserver.https_in_buf, https_admin_server_receive_message, NULL, NULL, &cliserver); - bufferevent_enable(cliserver.https_in_buf, EV_READ); + bufferevent_setcb(adminserver.https_in_buf, https_admin_server_receive_message, NULL, NULL, &adminserver); + bufferevent_enable(adminserver.https_in_buf, EV_READ); } - if(!cli_addr_set) { - if(make_ioa_addr((const u08bits*)CLI_DEFAULT_IP,0,&cli_addr)<0) { - TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR,"Cannot set cli address %s\n",CLI_DEFAULT_IP); + if(use_cli) { + if(!cli_addr_set) { + if(make_ioa_addr((const u08bits*)CLI_DEFAULT_IP,0,&cli_addr)<0) { + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR,"Cannot set cli address %s\n",CLI_DEFAULT_IP); + return; + } + } + + addr_set_port(&cli_addr,cli_port); + + adminserver.listen_fd = socket(cli_addr.ss.sa_family, SOCK_STREAM, 0); + if (adminserver.listen_fd < 0) { + perror("socket"); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR,"Cannot open CLI socket\n"); return; } - } - addr_set_port(&cli_addr,cli_port); + if(addr_bind(adminserver.listen_fd,&cli_addr,1)<0) { + perror("Cannot bind CLI socket to addr"); + char saddr[129]; + addr_to_string(&cli_addr,(u08bits*)saddr); + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR,"Cannot bind CLI listener socket to addr %s\n",saddr); + socket_closesocket(adminserver.listen_fd); + return; + } - cliserver.listen_fd = socket(cli_addr.ss.sa_family, SOCK_STREAM, 0); - if (cliserver.listen_fd < 0) { - perror("socket"); - TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR,"Cannot open CLI socket\n"); - return; - } + socket_tcp_set_keepalive(adminserver.listen_fd); - if(addr_bind(cliserver.listen_fd,&cli_addr,1)<0) { - perror("Cannot bind CLI socket to addr"); - char saddr[129]; - addr_to_string(&cli_addr,(u08bits*)saddr); - TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR,"Cannot bind CLI listener socket to addr %s\n",saddr); - socket_closesocket(cliserver.listen_fd); - return; - } + socket_set_nonblocking(adminserver.listen_fd); - socket_tcp_set_keepalive(cliserver.listen_fd); - - socket_set_nonblocking(cliserver.listen_fd); - - cliserver.l = evconnlistener_new(cliserver.event_base, - cliserver_input_handler, &cliserver, + adminserver.l = evconnlistener_new(adminserver.event_base, + cliserver_input_handler, &adminserver, LEV_OPT_CLOSE_ON_FREE | LEV_OPT_REUSEABLE, - 1024, cliserver.listen_fd); + 1024, adminserver.listen_fd); - if(!(cliserver.l)) { - TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR,"Cannot create CLI listener\n"); - socket_closesocket(cliserver.listen_fd); - return; + if(!(adminserver.l)) { + TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR,"Cannot create CLI listener\n"); + socket_closesocket(adminserver.listen_fd); + return; + } + + addr_debug_print(adminserver.verbose, &cli_addr,"CLI listener opened on "); } - cliserver.sessions = ur_map_create(); - - addr_debug_print(cliserver.verbose, &cli_addr,"CLI listener opened on "); + adminserver.sessions = ur_map_create(); } -void cli_server_receive_message(struct bufferevent *bev, void *ptr) +void admin_server_receive_message(struct bufferevent *bev, void *ptr) { UNUSED_ARG(ptr); @@ -1308,15 +1311,15 @@ void cli_server_receive_message(struct bufferevent *bev, void *ptr) } ur_map_value_type t = 0; - if (ur_map_get(cliserver.sessions, (ur_map_key_type)tsi->id, &t) && t) { + if (ur_map_get(adminserver.sessions, (ur_map_key_type)tsi->id, &t) && t) { struct turn_session_info *old = (struct turn_session_info*)t; turn_session_info_clean(old); turn_free(old,sizeof(struct turn_session_info)); - ur_map_del(cliserver.sessions, (ur_map_key_type)tsi->id, NULL); + ur_map_del(adminserver.sessions, (ur_map_key_type)tsi->id, NULL); } if(tsi->valid) { - ur_map_put(cliserver.sessions, (ur_map_key_type)tsi->id, (ur_map_value_type)tsi); + ur_map_put(adminserver.sessions, (ur_map_key_type)tsi->id, (ur_map_value_type)tsi); tsi = (struct turn_session_info*)turn_malloc(sizeof(struct turn_session_info)); turn_session_info_init(tsi); } else { @@ -1334,11 +1337,8 @@ int send_turn_session_info(struct turn_session_info* tsi) { int ret = -1; - if(!use_cli) - return ret; - if(tsi) { - struct evbuffer *output = bufferevent_get_output(cliserver.out_buf); + struct evbuffer *output = bufferevent_get_output(adminserver.out_buf); if(output) { if(evbuffer_add(output,tsi,sizeof(struct turn_session_info))>=0) { ret = 0; @@ -2109,7 +2109,7 @@ static size_t https_print_sessions(struct str_buffer* sb, const char* client_pro arg.ct = turn_time(); - ur_map_foreach_arg(cliserver.sessions, (foreachcb_arg_type)https_print_session, &arg); + ur_map_foreach_arg(adminserver.sessions, (foreachcb_arg_type)https_print_session, &arg); return arg.counter; } @@ -2381,7 +2381,7 @@ static void https_input_handler(ioa_socket_handle s, int event_type, ioa_net_dat handle_https(s,data->nbh); - ioa_network_buffer_delete(cliserver.e, data->nbh); + ioa_network_buffer_delete(adminserver.e, data->nbh); data->nbh = NULL; } @@ -2399,14 +2399,14 @@ void https_admin_server_receive_message(struct bufferevent *bev, void *ptr) continue; } - register_callback_on_ioa_socket(cliserver.e, s, IOA_EV_READ, https_input_handler, NULL, 0); + register_callback_on_ioa_socket(adminserver.e, s, IOA_EV_READ, https_input_handler, NULL, 0); handle_https(s,NULL); } } void send_https_socket(ioa_socket_handle s) { - struct evbuffer *output = bufferevent_get_output(cliserver.https_out_buf); + struct evbuffer *output = bufferevent_get_output(adminserver.https_out_buf); if(output) { evbuffer_add(output,&s,sizeof(s)); } diff --git a/src/apps/relay/turn_admin_server.h b/src/apps/relay/turn_admin_server.h index 37c6329..013d0af 100644 --- a/src/apps/relay/turn_admin_server.h +++ b/src/apps/relay/turn_admin_server.h @@ -51,7 +51,7 @@ extern "C" { //////////////////////////////////////////// -struct cli_server { +struct admin_server { evutil_socket_t listen_fd; struct event_base* event_base; ioa_engine_handle e; @@ -67,7 +67,7 @@ struct cli_server { /////////////////////////////////////////// -extern struct cli_server cliserver; +extern struct admin_server adminserver; extern int use_cli; @@ -86,9 +86,9 @@ extern int cli_max_output_sessions; //////////////////////////////////////////// -void setup_cli_thread(void); +void setup_admin_thread(void); -void cli_server_receive_message(struct bufferevent *bev, void *ptr); +void admin_server_receive_message(struct bufferevent *bev, void *ptr); void https_admin_server_receive_message(struct bufferevent *bev, void *ptr); int send_turn_session_info(struct turn_session_info* tsi);