mirror of
https://github.com/coturn/coturn.git
synced 2025-10-30 14:31:29 +01:00
created netengine.c get_relay_server utility method to reduce code duplication (#1032)
This commit is contained in:
parent
baa69d0815
commit
a7316a3d30
@ -67,6 +67,8 @@ static struct auth_server authserver[256];
|
||||
static struct relay_server *general_relay_servers[1+((turnserver_id)-1)];
|
||||
static struct relay_server *udp_relay_servers[1+((turnserver_id)-1)];
|
||||
|
||||
static struct relay_server* get_relay_server(turnserver_id id);
|
||||
|
||||
//////////////////////////////////////////////
|
||||
|
||||
static void run_events(struct event_base *eb, ioa_engine_handle e);
|
||||
@ -441,6 +443,42 @@ static void allocate_relay_addrs_ports(void) {
|
||||
|
||||
static int handle_relay_message(relay_server_handle rs, struct message_to_relay *sm);
|
||||
|
||||
static struct relay_server* get_relay_server(turnserver_id id) {
|
||||
struct relay_server *rs = NULL;
|
||||
if(id>=TURNSERVER_ID_BOUNDARY_BETWEEN_TCP_AND_UDP) {
|
||||
size_t dest = id-TURNSERVER_ID_BOUNDARY_BETWEEN_TCP_AND_UDP;
|
||||
if(dest >= get_real_udp_relay_servers_number()) {
|
||||
TURN_LOG_FUNC(
|
||||
TURN_LOG_LEVEL_ERROR,
|
||||
"%s: Too large UDP relay number: %d, total=%d\n",
|
||||
__FUNCTION__,(int)dest,(int)get_real_udp_relay_servers_number());
|
||||
}
|
||||
rs = udp_relay_servers[dest];
|
||||
if(!rs) {
|
||||
TURN_LOG_FUNC(
|
||||
TURN_LOG_LEVEL_ERROR,
|
||||
"%s: Wrong UDP relay number: %d, total=%d\n",
|
||||
__FUNCTION__,(int)dest,(int)get_real_udp_relay_servers_number());
|
||||
}
|
||||
} else {
|
||||
size_t dest = id;
|
||||
if(dest >= get_real_general_relay_servers_number()) {
|
||||
TURN_LOG_FUNC(
|
||||
TURN_LOG_LEVEL_ERROR,
|
||||
"%s: Too large general relay number: %d, total=%d\n",
|
||||
__FUNCTION__,(int)dest,(int)get_real_general_relay_servers_number());
|
||||
}
|
||||
rs = general_relay_servers[dest];
|
||||
if(!rs) {
|
||||
TURN_LOG_FUNC(
|
||||
TURN_LOG_LEVEL_ERROR,
|
||||
"%s: Wrong general relay number: %d, total=%d\n",
|
||||
__FUNCTION__,(int)dest,(int)get_real_general_relay_servers_number());
|
||||
}
|
||||
}
|
||||
return rs;
|
||||
}
|
||||
|
||||
static pthread_mutex_t auth_message_counter_mutex = PTHREAD_MUTEX_INITIALIZER;
|
||||
static authserver_id auth_message_counter = 1;
|
||||
|
||||
@ -481,42 +519,15 @@ static void auth_server_receive_message(struct bufferevent *bev, void *ptr)
|
||||
am.success = 1;
|
||||
}
|
||||
}
|
||||
|
||||
size_t dest = am.id;
|
||||
|
||||
|
||||
struct evbuffer *output = NULL;
|
||||
|
||||
if(dest>=TURNSERVER_ID_BOUNDARY_BETWEEN_TCP_AND_UDP) {
|
||||
dest -= TURNSERVER_ID_BOUNDARY_BETWEEN_TCP_AND_UDP;
|
||||
if(dest >= get_real_udp_relay_servers_number()) {
|
||||
TURN_LOG_FUNC(
|
||||
TURN_LOG_LEVEL_ERROR,
|
||||
"%s: Too large UDP relay number: %d\n",
|
||||
__FUNCTION__,(int)dest);
|
||||
} else if(!(udp_relay_servers[dest])) {
|
||||
TURN_LOG_FUNC(
|
||||
TURN_LOG_LEVEL_ERROR,
|
||||
"%s: Wrong UDP relay number: %d, total %d\n",
|
||||
__FUNCTION__,(int)dest, (int)get_real_udp_relay_servers_number());
|
||||
} else {
|
||||
output = bufferevent_get_output(udp_relay_servers[dest]->auth_out_buf);
|
||||
}
|
||||
} else {
|
||||
if(dest >= get_real_general_relay_servers_number()) {
|
||||
TURN_LOG_FUNC(
|
||||
TURN_LOG_LEVEL_ERROR,
|
||||
"%s: Too large general relay number: %d, total %d\n",
|
||||
__FUNCTION__,(int)dest,(int)get_real_general_relay_servers_number());
|
||||
} else if(!(general_relay_servers[dest])) {
|
||||
TURN_LOG_FUNC(
|
||||
TURN_LOG_LEVEL_ERROR,
|
||||
"%s: Wrong general relay number: %d, total %d\n",
|
||||
__FUNCTION__,(int)dest,(int)get_real_general_relay_servers_number());
|
||||
} else {
|
||||
output = bufferevent_get_output(general_relay_servers[dest]->auth_out_buf);
|
||||
}
|
||||
}
|
||||
|
||||
struct relay_server* relay_server = get_relay_server(am.id);
|
||||
if(relay_server) {
|
||||
output = bufferevent_get_output(relay_server->auth_out_buf);
|
||||
} else {
|
||||
TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: can't find relay for turn_server_id: %d\n", __FUNCTION__,(int)am.id);
|
||||
}
|
||||
|
||||
if(output)
|
||||
evbuffer_add(output,&am,sizeof(struct auth_message));
|
||||
else {
|
||||
@ -585,41 +596,10 @@ static int send_socket_to_relay(turnserver_id id, uint64_t cid, stun_tid *tid, i
|
||||
|
||||
ioa_socket_handle s_to_delete = s;
|
||||
|
||||
struct relay_server *rs = NULL;
|
||||
if(id>=TURNSERVER_ID_BOUNDARY_BETWEEN_TCP_AND_UDP) {
|
||||
size_t dest = id-TURNSERVER_ID_BOUNDARY_BETWEEN_TCP_AND_UDP;
|
||||
if(dest >= get_real_udp_relay_servers_number()) {
|
||||
TURN_LOG_FUNC(
|
||||
TURN_LOG_LEVEL_ERROR,
|
||||
"%s: Too large UDP relay number: %d, rmt=%d, total=%d\n",
|
||||
__FUNCTION__,(int)dest,(int)rmt, (int)get_real_udp_relay_servers_number());
|
||||
goto err;
|
||||
}
|
||||
rs = udp_relay_servers[dest];
|
||||
if(!rs) {
|
||||
TURN_LOG_FUNC(
|
||||
TURN_LOG_LEVEL_ERROR,
|
||||
"%s: Wrong UDP relay number: %d, rmt=%d, total=%d\n",
|
||||
__FUNCTION__,(int)dest,(int)rmt, (int)get_real_udp_relay_servers_number());
|
||||
goto err;
|
||||
}
|
||||
} else {
|
||||
size_t dest = id;
|
||||
if(dest >= get_real_general_relay_servers_number()) {
|
||||
TURN_LOG_FUNC(
|
||||
TURN_LOG_LEVEL_ERROR,
|
||||
"%s: Too large general relay number: %d, rmt=%d, total=%d\n",
|
||||
__FUNCTION__,(int)dest,(int)rmt, (int)get_real_general_relay_servers_number());
|
||||
goto err;
|
||||
}
|
||||
rs = general_relay_servers[dest];
|
||||
if(!rs) {
|
||||
TURN_LOG_FUNC(
|
||||
TURN_LOG_LEVEL_ERROR,
|
||||
"%s: Wrong general relay number: %d, rmt=%d, total=%d\n",
|
||||
__FUNCTION__,(int)dest,(int)rmt, (int)get_real_general_relay_servers_number());
|
||||
goto err;
|
||||
}
|
||||
struct relay_server *rs = get_relay_server(id);
|
||||
if(!rs) {
|
||||
TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: can't find relay for turn_server_id: %d\n", __FUNCTION__,(int)id);
|
||||
goto err;
|
||||
}
|
||||
|
||||
switch (rmt) {
|
||||
@ -716,45 +696,11 @@ int send_session_cancellation_to_relay(turnsession_id sid)
|
||||
|
||||
turnserver_id id = (turnserver_id)(sid / TURN_SESSION_ID_FACTOR);
|
||||
|
||||
struct relay_server *rs = NULL;
|
||||
if(id>=TURNSERVER_ID_BOUNDARY_BETWEEN_TCP_AND_UDP) {
|
||||
size_t dest = id-TURNSERVER_ID_BOUNDARY_BETWEEN_TCP_AND_UDP;
|
||||
if(dest >= get_real_udp_relay_servers_number()) {
|
||||
TURN_LOG_FUNC(
|
||||
TURN_LOG_LEVEL_ERROR,
|
||||
"%s: Too large UDP relay number: %d, total=%d\n",
|
||||
__FUNCTION__,(int)dest,(int)get_real_udp_relay_servers_number());
|
||||
ret = -1;
|
||||
goto err;
|
||||
}
|
||||
rs = udp_relay_servers[dest];
|
||||
if(!rs) {
|
||||
TURN_LOG_FUNC(
|
||||
TURN_LOG_LEVEL_ERROR,
|
||||
"%s: Wrong UDP relay number: %d, total=%d\n",
|
||||
__FUNCTION__,(int)dest,(int)get_real_udp_relay_servers_number());
|
||||
ret = -1;
|
||||
goto err;
|
||||
}
|
||||
} else {
|
||||
size_t dest = id;
|
||||
if(dest >= get_real_general_relay_servers_number()) {
|
||||
TURN_LOG_FUNC(
|
||||
TURN_LOG_LEVEL_ERROR,
|
||||
"%s: Too large general relay number: %d, total=%d\n",
|
||||
__FUNCTION__,(int)dest,(int)get_real_general_relay_servers_number());
|
||||
ret = -1;
|
||||
goto err;
|
||||
}
|
||||
rs = general_relay_servers[dest];
|
||||
if(!rs) {
|
||||
TURN_LOG_FUNC(
|
||||
TURN_LOG_LEVEL_ERROR,
|
||||
"%s: Wrong general relay number: %d, total=%d\n",
|
||||
__FUNCTION__,(int)dest,(int)get_real_general_relay_servers_number());
|
||||
ret = -1;
|
||||
goto err;
|
||||
}
|
||||
struct relay_server *rs = get_relay_server(id);
|
||||
if(!rs) {
|
||||
TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR, "%s: can't find relay for turn_server_id: %d\n", __FUNCTION__,(int)id);
|
||||
ret = -1;
|
||||
goto err;
|
||||
}
|
||||
|
||||
sm.relay_server = rs;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user