mirror of
https://github.com/coturn/coturn.git
synced 2025-10-26 12:31:00 +01:00
working on double allocation
This commit is contained in:
parent
e15ea092fd
commit
651c5204a4
@ -92,6 +92,16 @@ relay_endpoint_session *get_relay_session(allocation *a, int family)
|
||||
return &(a->relay_sessions[ALLOC_INDEX(family)]);
|
||||
}
|
||||
|
||||
int get_relay_session_failure(allocation *a, int family)
|
||||
{
|
||||
return a->relay_sessions_failure[ALLOC_INDEX(family)];
|
||||
}
|
||||
|
||||
void set_relay_session_failure(allocation *a, int family)
|
||||
{
|
||||
a->relay_sessions_failure[ALLOC_INDEX(family)] = 1;
|
||||
}
|
||||
|
||||
ioa_socket_handle get_relay_socket(allocation *a, int family)
|
||||
{
|
||||
return a->relay_sessions[ALLOC_INDEX(family)].s;
|
||||
|
||||
@ -176,6 +176,7 @@ typedef struct _allocation {
|
||||
stun_tid tid;
|
||||
turn_permission_hashtable addr_to_perm;
|
||||
relay_endpoint_session relay_sessions[ALLOC_PROTOCOLS_NUMBER];
|
||||
int relay_sessions_failure[ALLOC_PROTOCOLS_NUMBER];
|
||||
ch_map chns; /* chnum-to-ch_info* */
|
||||
void *owner; //ss
|
||||
ur_map *tcp_connections; //global (per turn server) reference
|
||||
@ -208,6 +209,8 @@ ch_info* allocation_get_ch_info(allocation* a, u16bits chnum);
|
||||
ch_info* allocation_get_ch_info_by_peer_addr(allocation* a, ioa_addr* peer_addr);
|
||||
|
||||
relay_endpoint_session *get_relay_session(allocation *a, int family);
|
||||
int get_relay_session_failure(allocation *a, int family);
|
||||
void set_relay_session_failure(allocation *a, int family);
|
||||
ioa_socket_handle get_relay_socket(allocation *a, int family);
|
||||
|
||||
tcp_connection *get_and_clean_tcp_connection_by_id(ur_map *map, tcp_connection_id id);
|
||||
|
||||
@ -904,7 +904,10 @@ static int handle_turn_allocate(turn_turnserver *server,
|
||||
ioa_addr *relayed_addr1 = get_local_addr_from_ioa_socket(get_relay_socket_ss(ss,AF_INET));
|
||||
ioa_addr *relayed_addr2 = get_local_addr_from_ioa_socket(get_relay_socket_ss(ss,AF_INET6));
|
||||
|
||||
if(relayed_addr1) {
|
||||
if(get_relay_session_failure(a,AF_INET)) {
|
||||
addr_set_any(&xor_relayed_addr1);
|
||||
pxor_relayed_addr1 = &xor_relayed_addr1;
|
||||
} else if(relayed_addr1) {
|
||||
if(server->external_ip_set) {
|
||||
addr_cpy(&xor_relayed_addr1, &(server->external_ip));
|
||||
addr_set_port(&xor_relayed_addr1,addr_get_port(relayed_addr1));
|
||||
@ -914,7 +917,10 @@ static int handle_turn_allocate(turn_turnserver *server,
|
||||
pxor_relayed_addr1 = &xor_relayed_addr1;
|
||||
}
|
||||
|
||||
if(relayed_addr2) {
|
||||
if(get_relay_session_failure(a,AF_INET6)) {
|
||||
addr_set_any(&xor_relayed_addr2);
|
||||
pxor_relayed_addr2 = &xor_relayed_addr2;
|
||||
} else if(relayed_addr2) {
|
||||
if(server->external_ip_set) {
|
||||
addr_cpy(&xor_relayed_addr2, &(server->external_ip));
|
||||
addr_set_port(&xor_relayed_addr2,addr_get_port(relayed_addr2));
|
||||
@ -1213,7 +1219,10 @@ static int handle_turn_allocate(turn_turnserver *server,
|
||||
ioa_addr *relayed_addr1 = get_local_addr_from_ioa_socket(get_relay_socket_ss(ss,AF_INET));
|
||||
ioa_addr *relayed_addr2 = get_local_addr_from_ioa_socket(get_relay_socket_ss(ss,AF_INET6));
|
||||
|
||||
if(relayed_addr1) {
|
||||
if(get_relay_session_failure(a,AF_INET)) {
|
||||
addr_set_any(&xor_relayed_addr1);
|
||||
pxor_relayed_addr1 = &xor_relayed_addr1;
|
||||
} else if(relayed_addr1) {
|
||||
if(server->external_ip_set) {
|
||||
addr_cpy(&xor_relayed_addr1, &(server->external_ip));
|
||||
addr_set_port(&xor_relayed_addr1,addr_get_port(relayed_addr1));
|
||||
@ -1223,7 +1232,10 @@ static int handle_turn_allocate(turn_turnserver *server,
|
||||
pxor_relayed_addr1 = &xor_relayed_addr1;
|
||||
}
|
||||
|
||||
if(relayed_addr2) {
|
||||
if(get_relay_session_failure(a,AF_INET6)) {
|
||||
addr_set_any(&xor_relayed_addr2);
|
||||
pxor_relayed_addr2 = &xor_relayed_addr2;
|
||||
} else if(relayed_addr2) {
|
||||
if(server->external_ip_set) {
|
||||
addr_cpy(&xor_relayed_addr2, &(server->external_ip));
|
||||
addr_set_port(&xor_relayed_addr2,addr_get_port(relayed_addr2));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user