fixes
This commit is contained in:
parent
37f1912eb1
commit
58efbf9635
@ -229,9 +229,6 @@ static ioa_socket_handle dtls_accept_client_connection(
|
||||
|
||||
ioa_socket_handle ioas = create_ioa_socket_from_ssl(server->e, sock, ssl, DTLS_SOCKET, CLIENT_SOCKET, remote_addr, local_addr);
|
||||
if(ioas) {
|
||||
|
||||
ioas->listener_server = server;
|
||||
|
||||
addr_cpy(&(server->sm.m.sm.nd.src_addr),remote_addr);
|
||||
server->sm.m.sm.nd.recv_ttl = TTL_IGNORE;
|
||||
server->sm.m.sm.nd.recv_tos = TOS_IGNORE;
|
||||
@ -437,7 +434,6 @@ static int handle_udp_packet(dtls_listener_relay_server_type *server,
|
||||
__FUNCTION__, (char*) saddr,(char*) rsaddr);
|
||||
}
|
||||
s->e = ioa_eng;
|
||||
s->listener_server = server;
|
||||
add_socket_to_map(s, amap);
|
||||
open_client_connection_session(ts, &(sm->m.sm));
|
||||
}
|
||||
@ -565,7 +561,6 @@ static int create_new_connected_udp_socket(
|
||||
"Accepted DTLS connection from");
|
||||
|
||||
ret->ssl = connecting_ssl;
|
||||
ret->listener_server = server;
|
||||
|
||||
ioa_network_buffer_delete(server->e, server->sm.m.sm.nd.nbh);
|
||||
server->sm.m.sm.nd.nbh = NULL;
|
||||
@ -583,9 +578,8 @@ static void udp_server_input_handler(evutil_socket_t fd, short what, void* arg)
|
||||
{
|
||||
int cycle = 0;
|
||||
|
||||
ioa_socket_handle s = (ioa_socket_handle)arg;
|
||||
|
||||
dtls_listener_relay_server_type* server = (dtls_listener_relay_server_type*)s->listener_server;
|
||||
dtls_listener_relay_server_type* server = (dtls_listener_relay_server_type*)arg;
|
||||
ioa_socket_handle s = server->udp_listen_s;
|
||||
|
||||
FUNCSTART;
|
||||
|
||||
@ -726,8 +720,6 @@ static int create_server_socket(dtls_listener_relay_server_type* server, int rep
|
||||
|
||||
server->udp_listen_s = create_ioa_socket_from_fd(server->e, udp_listen_fd, NULL, UDP_SOCKET, LISTENER_SOCKET, NULL, &(server->addr));
|
||||
|
||||
server->udp_listen_s->listener_server = server;
|
||||
|
||||
set_sock_buf_size(udp_listen_fd,UR_SERVER_SOCK_BUF_SIZE);
|
||||
|
||||
if(sock_bind_to_device(udp_listen_fd, (unsigned char*)server->ifname)<0) {
|
||||
@ -756,7 +748,7 @@ static int create_server_socket(dtls_listener_relay_server_type* server, int rep
|
||||
|
||||
server->udp_listen_ev = event_new(server->e->event_base,udp_listen_fd,
|
||||
EV_READ|EV_PERSIST,udp_server_input_handler,
|
||||
server->udp_listen_s);
|
||||
server);
|
||||
|
||||
event_add(server->udp_listen_ev,NULL);
|
||||
}
|
||||
@ -827,7 +819,7 @@ static int reopen_server_socket(dtls_listener_relay_server_type* server, evutil_
|
||||
|
||||
server->udp_listen_ev = event_new(server->e->event_base, udp_listen_fd,
|
||||
EV_READ | EV_PERSIST, udp_server_input_handler,
|
||||
server->udp_listen_s);
|
||||
server);
|
||||
|
||||
event_add(server->udp_listen_ev, NULL );
|
||||
}
|
||||
|
||||
@ -1448,16 +1448,23 @@ void add_socket_to_map(ioa_socket_handle s, ur_addr_map *amap)
|
||||
&(s->remote_addr),
|
||||
(ur_addr_map_value_type)s);
|
||||
s->sockets_container = amap;
|
||||
|
||||
//printf("%s: 111.111: amap=0x%lx: ne=%lu, sz=%lu\n",__FUNCTION__,(unsigned long)amap,(unsigned long)ur_addr_map_num_elements(amap),(unsigned long)ur_addr_map_size(amap));
|
||||
}
|
||||
}
|
||||
|
||||
void delete_socket_from_map(ioa_socket_handle s)
|
||||
{
|
||||
if(s && s->sockets_container) {
|
||||
|
||||
//ur_addr_map *amap = s->sockets_container;
|
||||
|
||||
ur_addr_map_del(s->sockets_container,
|
||||
&(s->remote_addr),
|
||||
NULL);
|
||||
s->sockets_container = NULL;
|
||||
|
||||
//printf("%s: 111.222: amap=0x%lx: ne=%lu, sz=%lu\n",__FUNCTION__,(unsigned long)amap,(unsigned long)ur_addr_map_num_elements(amap),(unsigned long)ur_addr_map_size(amap));
|
||||
}
|
||||
}
|
||||
|
||||
@ -1741,7 +1748,11 @@ ioa_socket_handle detach_ioa_socket(ioa_socket_handle s, int full_detach)
|
||||
set_socket_ssl(ret,s->ssl);
|
||||
ret->fd = s->fd;
|
||||
|
||||
ret->family = s->family;
|
||||
if(s->parent_s)
|
||||
ret->family = s->parent_s->family;
|
||||
else
|
||||
ret->family = s->family;
|
||||
|
||||
ret->st = s->st;
|
||||
ret->sat = s->sat;
|
||||
ret->bound = s->bound;
|
||||
@ -1836,6 +1847,8 @@ void set_ioa_socket_sub_session(ioa_socket_handle s, tcp_connection *tc)
|
||||
int get_ioa_socket_address_family(ioa_socket_handle s) {
|
||||
if(!s) {
|
||||
return AF_INET;
|
||||
} else if(s->done) {
|
||||
return s->family;
|
||||
} else if(s->parent_s) {
|
||||
return s->parent_s->family;
|
||||
} else {
|
||||
|
||||
@ -170,7 +170,6 @@ struct _ioa_socket
|
||||
{
|
||||
evutil_socket_t fd;
|
||||
struct _ioa_socket *parent_s;
|
||||
void *listener_server;
|
||||
u32bits magic;
|
||||
ur_addr_map *sockets_container; /* relay container for UDP sockets */
|
||||
struct bufferevent *bev;
|
||||
|
||||
@ -98,8 +98,6 @@ static void server_input_handler(struct evconnlistener *l, evutil_socket_t fd,
|
||||
|
||||
if (ioas) {
|
||||
|
||||
ioas->listener_server = server;
|
||||
|
||||
server->sm.m.sm.nd.recv_ttl = TTL_IGNORE;
|
||||
server->sm.m.sm.nd.recv_tos = TOS_IGNORE;
|
||||
server->sm.m.sm.nd.nbh = NULL;
|
||||
|
||||
@ -692,6 +692,48 @@ static void addr_list_foreach(addr_list_header* slh, ur_addr_map_func func) {
|
||||
}
|
||||
}
|
||||
|
||||
static size_t addr_list_num_elements(const addr_list_header* slh) {
|
||||
|
||||
size_t ret = 0;
|
||||
|
||||
if (slh) {
|
||||
|
||||
size_t i;
|
||||
|
||||
for (i = 0; i < ADDR_ARRAY_SIZE; ++i) {
|
||||
const addr_elem *elem = &(slh->main_list[i]);
|
||||
if (elem->value) {
|
||||
++ret;
|
||||
}
|
||||
}
|
||||
|
||||
if (slh->extra_list) {
|
||||
for (i = 0; i < slh->extra_sz; ++i) {
|
||||
addr_elem *elem = &(slh->extra_list[i]);
|
||||
if (elem->value) {
|
||||
++ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static size_t addr_list_size(const addr_list_header* slh) {
|
||||
|
||||
size_t ret = 0;
|
||||
|
||||
if (slh) {
|
||||
|
||||
ret += ADDR_ARRAY_SIZE;
|
||||
|
||||
ret += slh->extra_sz;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static addr_elem* addr_list_get(addr_list_header* slh, const ioa_addr* key) {
|
||||
|
||||
if(!slh || !key) return NULL;
|
||||
@ -863,6 +905,40 @@ void ur_addr_map_foreach(ur_addr_map* map, ur_addr_map_func func) {
|
||||
}
|
||||
}
|
||||
|
||||
size_t ur_addr_map_num_elements(const ur_addr_map* map) {
|
||||
|
||||
size_t ret = 0;
|
||||
|
||||
if (ur_addr_map_valid(map)) {
|
||||
u32bits i = 0;
|
||||
for (i = 0; i < ADDR_MAP_SIZE; i++) {
|
||||
|
||||
const addr_list_header* slh = &(map->lists[i]);
|
||||
|
||||
ret += addr_list_num_elements(slh);
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
size_t ur_addr_map_size(const ur_addr_map* map) {
|
||||
|
||||
size_t ret = 0;
|
||||
|
||||
if (ur_addr_map_valid(map)) {
|
||||
u32bits i = 0;
|
||||
for (i = 0; i < ADDR_MAP_SIZE; i++) {
|
||||
|
||||
const addr_list_header* slh = &(map->lists[i]);
|
||||
|
||||
ret += addr_list_size(slh);
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
//////////////////// STRING LISTS ///////////////////////////////////
|
||||
|
||||
typedef struct _string_list {
|
||||
|
||||
@ -216,6 +216,7 @@ int ur_addr_map_del(ur_addr_map* map, ioa_addr* key,ur_addr_map_func func);
|
||||
*/
|
||||
void ur_addr_map_foreach(ur_addr_map* map, ur_addr_map_func func);
|
||||
|
||||
size_t ur_addr_map_num_elements(const ur_addr_map* map);
|
||||
size_t ur_addr_map_size(const ur_addr_map* map);
|
||||
|
||||
//////////////// UR STRING MAP //////////////////
|
||||
|
||||
@ -1610,7 +1610,7 @@ static int handle_turn_refresh(turn_turnserver *server,
|
||||
|
||||
//Transfer socket:
|
||||
|
||||
ioa_socket_handle s = detach_ioa_socket(ss->client_socket,0);
|
||||
ioa_socket_handle s = detach_ioa_socket(ss->client_socket,1);
|
||||
|
||||
ss->to_be_closed = 1;
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user