mirror of
https://github.com/coturn/coturn.git
synced 2025-10-26 20:41:07 +01:00
working on crashes
This commit is contained in:
parent
4850464e1a
commit
553b16dfa1
@ -7,6 +7,7 @@ Version 4.1.0.1 'Vitari':
|
|||||||
- STUN BINDING response fixed in the case of -X (external address) option.
|
- STUN BINDING response fixed in the case of -X (external address) option.
|
||||||
- "pu" CLI command fixed.
|
- "pu" CLI command fixed.
|
||||||
- session cleaning fixed in TCP relay functionality (RFC 6062).
|
- session cleaning fixed in TCP relay functionality (RFC 6062).
|
||||||
|
- some crash conditions fixed.
|
||||||
- working on compilation warnings.
|
- working on compilation warnings.
|
||||||
|
|
||||||
06/13/2014 Oleg Moskalenko <mom040267@gmail.com>
|
06/13/2014 Oleg Moskalenko <mom040267@gmail.com>
|
||||||
|
|||||||
@ -401,6 +401,11 @@ static void auth_server_receive_message(struct bufferevent *bev, void *ptr)
|
|||||||
TURN_LOG_LEVEL_ERROR,
|
TURN_LOG_LEVEL_ERROR,
|
||||||
"%s: Too large UDP relay number: %d\n",
|
"%s: Too large UDP relay number: %d\n",
|
||||||
__FUNCTION__,(int)dest);
|
__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 {
|
} else {
|
||||||
output = bufferevent_get_output(udp_relay_servers[dest]->auth_out_buf);
|
output = bufferevent_get_output(udp_relay_servers[dest]->auth_out_buf);
|
||||||
}
|
}
|
||||||
@ -408,8 +413,13 @@ static void auth_server_receive_message(struct bufferevent *bev, void *ptr)
|
|||||||
if(dest >= get_real_general_relay_servers_number()) {
|
if(dest >= get_real_general_relay_servers_number()) {
|
||||||
TURN_LOG_FUNC(
|
TURN_LOG_FUNC(
|
||||||
TURN_LOG_LEVEL_ERROR,
|
TURN_LOG_LEVEL_ERROR,
|
||||||
"%s: Too large general relay number: %d\n",
|
"%s: Too large general relay number: %d, total %d\n",
|
||||||
__FUNCTION__,(int)dest);
|
__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 {
|
} else {
|
||||||
output = bufferevent_get_output(general_relay_servers[dest]->auth_out_buf);
|
output = bufferevent_get_output(general_relay_servers[dest]->auth_out_buf);
|
||||||
}
|
}
|
||||||
@ -437,37 +447,38 @@ static int send_socket_to_general_relay(ioa_engine_handle e, struct message_to_r
|
|||||||
|
|
||||||
smptr->t = RMT_SOCKET;
|
smptr->t = RMT_SOCKET;
|
||||||
|
|
||||||
{
|
struct evbuffer *output = NULL;
|
||||||
struct evbuffer *output = NULL;
|
int success = 0;
|
||||||
int success = 0;
|
|
||||||
|
|
||||||
output = bufferevent_get_output(rdest->out_buf);
|
if(!rdest) {
|
||||||
|
success = -1;
|
||||||
|
goto label_end;
|
||||||
|
}
|
||||||
|
|
||||||
if(output) {
|
output = bufferevent_get_output(rdest->out_buf);
|
||||||
|
|
||||||
if(evbuffer_add(output,smptr,sizeof(struct message_to_relay))<0) {
|
if(output) {
|
||||||
TURN_LOG_FUNC(
|
|
||||||
TURN_LOG_LEVEL_ERROR,
|
|
||||||
"%s: Cannot add message to relay output buffer\n",
|
|
||||||
__FUNCTION__);
|
|
||||||
} else {
|
|
||||||
|
|
||||||
success = 1;
|
if(evbuffer_add(output,smptr,sizeof(struct message_to_relay))<0) {
|
||||||
smptr->m.sm.nd.nbh=NULL;
|
TURN_LOG_FUNC(
|
||||||
}
|
TURN_LOG_LEVEL_ERROR,
|
||||||
|
"%s: Cannot add message to relay output buffer\n",
|
||||||
}
|
__FUNCTION__);
|
||||||
|
} else {
|
||||||
if(!success) {
|
success = 1;
|
||||||
ioa_network_buffer_delete(e, smptr->m.sm.nd.nbh);
|
|
||||||
smptr->m.sm.nd.nbh=NULL;
|
smptr->m.sm.nd.nbh=NULL;
|
||||||
|
|
||||||
IOA_CLOSE_SOCKET(smptr->m.sm.s);
|
|
||||||
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
label_end:
|
||||||
|
|
||||||
|
if(!success) {
|
||||||
|
ioa_network_buffer_delete(e, smptr->m.sm.nd.nbh);
|
||||||
|
smptr->m.sm.nd.nbh=NULL;
|
||||||
|
IOA_CLOSE_SOCKET(smptr->m.sm.s);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -487,23 +498,39 @@ static int send_socket_to_relay(turnserver_id id, u64bits cid, stun_tid *tid, io
|
|||||||
if(dest >= get_real_udp_relay_servers_number()) {
|
if(dest >= get_real_udp_relay_servers_number()) {
|
||||||
TURN_LOG_FUNC(
|
TURN_LOG_FUNC(
|
||||||
TURN_LOG_LEVEL_ERROR,
|
TURN_LOG_LEVEL_ERROR,
|
||||||
"%s: Too large UDP relay number: %d, rmt=%d\n",
|
"%s: Too large UDP relay number: %d, rmt=%d, total=%d\n",
|
||||||
__FUNCTION__,(int)dest,(int)rmt);
|
__FUNCTION__,(int)dest,(int)rmt, (int)get_real_udp_relay_servers_number());
|
||||||
ret = -1;
|
ret = -1;
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
rs = udp_relay_servers[dest];
|
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());
|
||||||
|
ret = -1;
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
size_t dest = id;
|
size_t dest = id;
|
||||||
if(dest >= get_real_general_relay_servers_number()) {
|
if(dest >= get_real_general_relay_servers_number()) {
|
||||||
TURN_LOG_FUNC(
|
TURN_LOG_FUNC(
|
||||||
TURN_LOG_LEVEL_ERROR,
|
TURN_LOG_LEVEL_ERROR,
|
||||||
"%s: Too large general relay number: %d, rmt=%d\n",
|
"%s: Too large general relay number: %d, rmt=%d, total=%d\n",
|
||||||
__FUNCTION__,(int)dest,(int)rmt);
|
__FUNCTION__,(int)dest,(int)rmt, (int)get_real_general_relay_servers_number());
|
||||||
ret = -1;
|
ret = -1;
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
rs = general_relay_servers[dest];
|
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());
|
||||||
|
ret = -1;
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (rmt) {
|
switch (rmt) {
|
||||||
@ -749,7 +776,12 @@ static void listener_receive_message(struct bufferevent *bev, void *ptr)
|
|||||||
if(turn_params.net_engine_version == NEV_UDP_SOCKET_PER_THREAD) {
|
if(turn_params.net_engine_version == NEV_UDP_SOCKET_PER_THREAD) {
|
||||||
size_t ri;
|
size_t ri;
|
||||||
for(ri=0;ri<get_real_general_relay_servers_number();ri++) {
|
for(ri=0;ri<get_real_general_relay_servers_number();ri++) {
|
||||||
if(general_relay_servers[ri]->thr == pthread_self()) {
|
if(!(general_relay_servers[ri])) {
|
||||||
|
TURN_LOG_FUNC(
|
||||||
|
TURN_LOG_LEVEL_ERROR,
|
||||||
|
"%s: Wrong general relay number: %d, total %d\n",
|
||||||
|
__FUNCTION__,(int)ri,(int)get_real_general_relay_servers_number());
|
||||||
|
} else if(general_relay_servers[ri]->thr == pthread_self()) {
|
||||||
relay_thread_index=ri;
|
relay_thread_index=ri;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1655,6 +1687,25 @@ void setup_server(void)
|
|||||||
setup_tcp_listener_servers(turn_params.listener.ioa_eng, NULL);
|
setup_tcp_listener_servers(turn_params.listener.ioa_eng, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
int tot = 0;
|
||||||
|
if(udp_relay_servers[0]) {
|
||||||
|
tot = get_real_udp_relay_servers_number();
|
||||||
|
}
|
||||||
|
TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO,"Total UDP servers: %d\n",(int)tot);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
int tot = get_real_general_relay_servers_number();
|
||||||
|
TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO,"Total General servers: %d\n",(int)tot);
|
||||||
|
int i;
|
||||||
|
for(i = 0;i<tot;i++) {
|
||||||
|
if(!(general_relay_servers[i])) {
|
||||||
|
TURN_LOG_FUNC(TURN_LOG_LEVEL_ERROR,"General server %d is not initialized !\n",(int)i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
setup_auth_server();
|
setup_auth_server();
|
||||||
if(use_cli)
|
if(use_cli)
|
||||||
setup_cli_server();
|
setup_cli_server();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user