mirror of
https://github.com/coturn/coturn.git
synced 2025-10-23 12:00:59 +02:00
fix turn session leak (#962)
Actually, as below, before fixing, the sessions_map may be larger and larger when register_callback_on_ioa_socket inside open_client_connection_session retrun -1. The reason is that, if register_callback_on_ioa_socket return -1, no read/write/ event will be registered and no timeout event will be registered, in this case, the session will never be deleted from sessions_map.  After fixing, when register_callback_on_ioa_socket fail,it doesn't return immediately, instead, we still register client_to_be_allocated_timeout_handler in the next step of open_client_connection_session. In this case, the unuseful session will be deleted and freed after timeout. @eakraly @ggarber
This commit is contained in:
commit
c8663f4a91
@ -4719,7 +4719,7 @@ static int attach_socket_to_session(turn_turnserver* server, ioa_socket_handle s
|
||||
|
||||
int open_client_connection_session(turn_turnserver* server,
|
||||
struct socket_message *sm) {
|
||||
|
||||
int ret = 0;
|
||||
FUNCSTART;
|
||||
if (!server)
|
||||
return -1;
|
||||
@ -4733,7 +4733,7 @@ int open_client_connection_session(turn_turnserver* server,
|
||||
|
||||
if(register_callback_on_ioa_socket(server->e, ss->client_socket, IOA_EV_READ,
|
||||
client_input_handler, ss, 0)<0) {
|
||||
return -1;
|
||||
ret = -1;
|
||||
}
|
||||
|
||||
set_ioa_socket_session(ss->client_socket, ss);
|
||||
@ -4756,7 +4756,7 @@ int open_client_connection_session(turn_turnserver* server,
|
||||
|
||||
FUNCEND;
|
||||
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/////////////// io handlers ///////////////////
|
||||
|
Loading…
x
Reference in New Issue
Block a user