Pass sock buf size as argument

pull/1089/head
Pavel Punsky 3 months ago
parent d0c8933a56
commit e2082a4eed
  1. 2
      examples/run_tests.sh
  2. 19
      src/apps/relay/dtls_listener.c
  3. 4
      src/apps/relay/dtls_listener.h
  4. 77
      src/apps/relay/netengine.c

@ -7,7 +7,7 @@ if [ ! -f $BINDIR/turnserver ]; then
fi
echo 'Running turnserver'
$BINDIR/turnserver --use-auth-secret --static-auth-secret=secret --realm=north.gov --allow-loopback-peers --no-cli --cert ../examples/ca/turn_server_cert.pem --pkey ../examples/ca/turn_server_pkey.pem > /dev/null &
$BINDIR/turnserver --use-auth-secret --sock-buf-size=1048576 --static-auth-secret=secret --realm=north.gov --allow-loopback-peers --no-cli --cert ../examples/ca/turn_server_cert.pem --pkey ../examples/ca/turn_server_pkey.pem &
echo 'Running peer client'
$BINDIR/turnutils_peer -L 127.0.0.1 -L ::1 -L 0.0.0.0 > /dev/null &

@ -78,7 +78,7 @@ struct dtls_listener_relay_server_info {
///////////// forward declarations ////////
static int create_server_socket(dtls_listener_relay_server_type *server, int report_creation);
static int create_server_socket(dtls_listener_relay_server_type *server, int report_creation, int sock_buf_size);
static int clean_server(dtls_listener_relay_server_type *server);
static int reopen_server_socket(dtls_listener_relay_server_type *server, evutil_socket_t fd);
@ -740,7 +740,7 @@ start_udp_cycle:
///////////////////// operations //////////////////////////
static int create_server_socket(dtls_listener_relay_server_type *server, int report_creation) {
static int create_server_socket(dtls_listener_relay_server_type *server, int report_creation, int sock_buf_size) {
FUNCSTART;
@ -762,7 +762,7 @@ 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));
set_ioa_socket_buf_size(server->udp_listen_s, server->ts->sock_buf_size);
set_ioa_socket_buf_size(server->udp_listen_s, sock_buf_size);
if (sock_bind_to_device(udp_listen_fd, (unsigned char *)server->ifname) < 0) {
TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "Cannot bind listener socket to device %s\n", server->ifname);
@ -831,7 +831,7 @@ static int reopen_server_socket(dtls_listener_relay_server_type *server, evutil_
}
if (!(server->udp_listen_s)) {
return create_server_socket(server, 1);
return create_server_socket(server, 1, turn_params.sock_buf_size);
}
const ioa_socket_raw udp_listen_fd =
@ -896,7 +896,7 @@ static int dtls_verify_callback(int ok, X509_STORE_CTX *ctx) {
#endif
static int init_server(dtls_listener_relay_server_type *server, const char *ifname, const char *local_address, int port,
int verbose, ioa_engine_handle e, turn_turnserver *ts, int report_creation,
int sock_buf_size, int verbose, ioa_engine_handle e, turn_turnserver *ts, int report_creation,
ioa_engine_new_connection_event_handler send_socket) {
if (!server) {
@ -921,7 +921,7 @@ static int init_server(dtls_listener_relay_server_type *server, const char *ifna
server->e = e;
return create_server_socket(server, report_creation);
return create_server_socket(server, report_creation, turn_params.sock_buf_size);
}
static int clean_server(dtls_listener_relay_server_type *server) {
@ -952,14 +952,15 @@ void setup_dtls_callbacks(SSL_CTX *ctx) {
#endif
dtls_listener_relay_server_type *create_dtls_listener_server(const char *ifname, const char *local_address, int port,
int verbose, ioa_engine_handle e, turn_turnserver *ts,
int report_creation,
int sock_buf_size, int verbose, ioa_engine_handle e,
turn_turnserver *ts, int report_creation,
ioa_engine_new_connection_event_handler send_socket) {
dtls_listener_relay_server_type *server =
(dtls_listener_relay_server_type *)allocate_super_memory_engine(e, sizeof(dtls_listener_relay_server_type));
if (init_server(server, ifname, local_address, port, verbose, e, ts, report_creation, send_socket) < 0) {
if (init_server(server, ifname, local_address, port, sock_buf_size, verbose, e, ts, report_creation, send_socket) <
0) {
return NULL;
} else {
return server;

@ -59,8 +59,8 @@ void setup_dtls_callbacks(SSL_CTX *ctx);
#endif
dtls_listener_relay_server_type *create_dtls_listener_server(const char *ifname, const char *local_address, int port,
int verbose, ioa_engine_handle e, turn_turnserver *ts,
int report_creation,
int sock_buf_size, int verbose, ioa_engine_handle e,
turn_turnserver *ts, int report_creation,
ioa_engine_new_connection_event_handler send_socket);
void udp_send_message(dtls_listener_relay_server_type *server, ioa_network_buffer_handle nbh, ioa_addr *dest);

@ -1155,8 +1155,8 @@ static void setup_socket_per_endpoint_udp_listener_servers(void) {
turn_params.listener.aux_udp_services[index] = (dtls_listener_relay_server_type **)allocate_super_memory_engine(
udp_relay_servers[udp_relay_server_index]->ioa_eng, sizeof(dtls_listener_relay_server_type *));
turn_params.listener.aux_udp_services[index][0] =
create_dtls_listener_server(turn_params.listener_ifname, saddr, port, turn_params.verbose,
udp_relay_servers[udp_relay_server_index]->ioa_eng,
create_dtls_listener_server(turn_params.listener_ifname, saddr, port, turn_params.sock_buf_size,
turn_params.verbose, udp_relay_servers[udp_relay_server_index]->ioa_eng,
&(udp_relay_servers[udp_relay_server_index]->server), 1, NULL);
if (turn_params.general_relay_servers_number > 1) {
@ -1182,9 +1182,9 @@ static void setup_socket_per_endpoint_udp_listener_servers(void) {
turn_params.listener.udp_services[index] = (dtls_listener_relay_server_type **)allocate_super_memory_engine(
udp_relay_servers[udp_relay_server_index]->ioa_eng, sizeof(dtls_listener_relay_server_type *));
turn_params.listener.udp_services[index][0] = create_dtls_listener_server(
turn_params.listener_ifname, turn_params.listener.addrs[i], turn_params.listener_port, turn_params.verbose,
udp_relay_servers[udp_relay_server_index]->ioa_eng, &(udp_relay_servers[udp_relay_server_index]->server), 1,
NULL);
turn_params.listener_ifname, turn_params.listener.addrs[i], turn_params.listener_port,
turn_params.sock_buf_size, turn_params.verbose, udp_relay_servers[udp_relay_server_index]->ioa_eng,
&(udp_relay_servers[udp_relay_server_index]->server), 1, NULL);
if (turn_params.general_relay_servers_number > 1) {
++udp_relay_server_index;
@ -1201,9 +1201,9 @@ static void setup_socket_per_endpoint_udp_listener_servers(void) {
turn_params.listener.udp_services[index + 1] = (dtls_listener_relay_server_type **)allocate_super_memory_engine(
udp_relay_servers[udp_relay_server_index]->ioa_eng, sizeof(dtls_listener_relay_server_type *));
turn_params.listener.udp_services[index + 1][0] = create_dtls_listener_server(
turn_params.listener_ifname, turn_params.listener.addrs[i], get_alt_listener_port(), turn_params.verbose,
udp_relay_servers[udp_relay_server_index]->ioa_eng, &(udp_relay_servers[udp_relay_server_index]->server), 1,
NULL);
turn_params.listener_ifname, turn_params.listener.addrs[i], get_alt_listener_port(),
turn_params.sock_buf_size, turn_params.verbose, udp_relay_servers[udp_relay_server_index]->ioa_eng,
&(udp_relay_servers[udp_relay_server_index]->server), 1, NULL);
if (turn_params.general_relay_servers_number > 1) {
++udp_relay_server_index;
@ -1227,7 +1227,7 @@ static void setup_socket_per_endpoint_udp_listener_servers(void) {
udp_relay_servers[udp_relay_server_index]->ioa_eng, sizeof(dtls_listener_relay_server_type *));
turn_params.listener.dtls_services[index][0] = create_dtls_listener_server(
turn_params.listener_ifname, turn_params.listener.addrs[i], turn_params.tls_listener_port,
turn_params.verbose, udp_relay_servers[udp_relay_server_index]->ioa_eng,
turn_params.sock_buf_size, turn_params.verbose, udp_relay_servers[udp_relay_server_index]->ioa_eng,
&(udp_relay_servers[udp_relay_server_index]->server), 1, NULL);
if (turn_params.general_relay_servers_number > 1) {
@ -1247,7 +1247,7 @@ static void setup_socket_per_endpoint_udp_listener_servers(void) {
udp_relay_servers[udp_relay_server_index]->ioa_eng, sizeof(dtls_listener_relay_server_type *));
turn_params.listener.dtls_services[index + 1][0] = create_dtls_listener_server(
turn_params.listener_ifname, turn_params.listener.addrs[i], get_alt_tls_listener_port(),
turn_params.verbose, udp_relay_servers[udp_relay_server_index]->ioa_eng,
turn_params.sock_buf_size, turn_params.verbose, udp_relay_servers[udp_relay_server_index]->ioa_eng,
&(udp_relay_servers[udp_relay_server_index]->server), 1, NULL);
if (turn_params.general_relay_servers_number > 1) {
@ -1299,9 +1299,10 @@ static void setup_socket_per_thread_udp_listener_servers(void) {
sizeof(dtls_listener_relay_server_type *) * get_real_general_relay_servers_number());
for (relayindex = 0; relayindex < get_real_general_relay_servers_number(); relayindex++) {
turn_params.listener.aux_udp_services[index][relayindex] = create_dtls_listener_server(
turn_params.listener_ifname, saddr, port, turn_params.verbose, general_relay_servers[relayindex]->ioa_eng,
&(general_relay_servers[relayindex]->server), !relayindex, NULL);
turn_params.listener.aux_udp_services[index][relayindex] =
create_dtls_listener_server(turn_params.listener_ifname, saddr, port, turn_params.sock_buf_size,
turn_params.verbose, general_relay_servers[relayindex]->ioa_eng,
&(general_relay_servers[relayindex]->server), !relayindex, NULL);
}
}
}
@ -1320,9 +1321,9 @@ static void setup_socket_per_thread_udp_listener_servers(void) {
for (relayindex = 0; relayindex < get_real_general_relay_servers_number(); relayindex++) {
turn_params.listener.udp_services[index][relayindex] = create_dtls_listener_server(
turn_params.listener_ifname, turn_params.listener.addrs[i], turn_params.listener_port, turn_params.verbose,
general_relay_servers[relayindex]->ioa_eng, &(general_relay_servers[relayindex]->server), !relayindex,
NULL);
turn_params.listener_ifname, turn_params.listener.addrs[i], turn_params.listener_port,
turn_params.sock_buf_size, turn_params.verbose, general_relay_servers[relayindex]->ioa_eng,
&(general_relay_servers[relayindex]->server), !relayindex, NULL);
}
if (turn_params.rfc5780) {
@ -1333,9 +1334,9 @@ static void setup_socket_per_thread_udp_listener_servers(void) {
for (relayindex = 0; relayindex < get_real_general_relay_servers_number(); relayindex++) {
turn_params.listener.udp_services[index + 1][relayindex] = create_dtls_listener_server(
turn_params.listener_ifname, turn_params.listener.addrs[i], get_alt_listener_port(), turn_params.verbose,
general_relay_servers[relayindex]->ioa_eng, &(general_relay_servers[relayindex]->server), !relayindex,
NULL);
turn_params.listener_ifname, turn_params.listener.addrs[i], get_alt_listener_port(),
turn_params.sock_buf_size, turn_params.verbose, general_relay_servers[relayindex]->ioa_eng,
&(general_relay_servers[relayindex]->server), !relayindex, NULL);
}
}
} else {
@ -1353,7 +1354,7 @@ static void setup_socket_per_thread_udp_listener_servers(void) {
for (relayindex = 0; relayindex < get_real_general_relay_servers_number(); relayindex++) {
turn_params.listener.dtls_services[index][relayindex] = create_dtls_listener_server(
turn_params.listener_ifname, turn_params.listener.addrs[i], turn_params.tls_listener_port,
turn_params.verbose, general_relay_servers[relayindex]->ioa_eng,
turn_params.sock_buf_size, turn_params.verbose, general_relay_servers[relayindex]->ioa_eng,
&(general_relay_servers[relayindex]->server), !relayindex, NULL);
}
@ -1367,7 +1368,7 @@ static void setup_socket_per_thread_udp_listener_servers(void) {
for (relayindex = 0; relayindex < get_real_general_relay_servers_number(); relayindex++) {
turn_params.listener.dtls_services[index + 1][relayindex] = create_dtls_listener_server(
turn_params.listener_ifname, turn_params.listener.addrs[i], get_alt_tls_listener_port(),
turn_params.verbose, general_relay_servers[relayindex]->ioa_eng,
turn_params.sock_buf_size, turn_params.verbose, general_relay_servers[relayindex]->ioa_eng,
&(general_relay_servers[relayindex]->server), !relayindex, NULL);
}
}
@ -1399,9 +1400,9 @@ static void setup_socket_per_session_udp_listener_servers(void) {
turn_params.listener.aux_udp_services[index] = (dtls_listener_relay_server_type **)allocate_super_memory_engine(
turn_params.listener.ioa_eng, sizeof(dtls_listener_relay_server_type *));
turn_params.listener.aux_udp_services[index][0] =
create_dtls_listener_server(turn_params.listener_ifname, saddr, port, turn_params.verbose,
turn_params.listener.ioa_eng, NULL, 1, send_socket_to_general_relay);
turn_params.listener.aux_udp_services[index][0] = create_dtls_listener_server(
turn_params.listener_ifname, saddr, port, turn_params.sock_buf_size, turn_params.verbose,
turn_params.listener.ioa_eng, NULL, 1, send_socket_to_general_relay);
}
}
@ -1416,18 +1417,20 @@ static void setup_socket_per_session_udp_listener_servers(void) {
turn_params.listener.udp_services[index] = (dtls_listener_relay_server_type **)allocate_super_memory_engine(
turn_params.listener.ioa_eng, sizeof(dtls_listener_relay_server_type *));
turn_params.listener.udp_services[index][0] = create_dtls_listener_server(
turn_params.listener_ifname, turn_params.listener.addrs[i], turn_params.listener_port, turn_params.verbose,
turn_params.listener.ioa_eng, NULL, 1, send_socket_to_general_relay);
turn_params.listener.udp_services[index][0] =
create_dtls_listener_server(turn_params.listener_ifname, turn_params.listener.addrs[i],
turn_params.listener_port, turn_params.sock_buf_size, turn_params.verbose,
turn_params.listener.ioa_eng, NULL, 1, send_socket_to_general_relay);
if (turn_params.rfc5780) {
turn_params.listener.udp_services[index + 1] = (dtls_listener_relay_server_type **)allocate_super_memory_engine(
turn_params.listener.ioa_eng, sizeof(dtls_listener_relay_server_type *));
turn_params.listener.udp_services[index + 1][0] = create_dtls_listener_server(
turn_params.listener_ifname, turn_params.listener.addrs[i], get_alt_listener_port(), turn_params.verbose,
turn_params.listener.ioa_eng, NULL, 1, send_socket_to_general_relay);
turn_params.listener.udp_services[index + 1][0] =
create_dtls_listener_server(turn_params.listener_ifname, turn_params.listener.addrs[i],
get_alt_listener_port(), turn_params.sock_buf_size, turn_params.verbose,
turn_params.listener.ioa_eng, NULL, 1, send_socket_to_general_relay);
}
} else {
turn_params.listener.udp_services[index] = NULL;
@ -1440,9 +1443,10 @@ static void setup_socket_per_session_udp_listener_servers(void) {
turn_params.listener.dtls_services[index] = (dtls_listener_relay_server_type **)allocate_super_memory_engine(
turn_params.listener.ioa_eng, sizeof(dtls_listener_relay_server_type *));
turn_params.listener.dtls_services[index][0] = create_dtls_listener_server(
turn_params.listener_ifname, turn_params.listener.addrs[i], turn_params.tls_listener_port,
turn_params.verbose, turn_params.listener.ioa_eng, NULL, 1, send_socket_to_general_relay);
turn_params.listener.dtls_services[index][0] =
create_dtls_listener_server(turn_params.listener_ifname, turn_params.listener.addrs[i],
turn_params.tls_listener_port, turn_params.sock_buf_size, turn_params.verbose,
turn_params.listener.ioa_eng, NULL, 1, send_socket_to_general_relay);
if (turn_params.rfc5780) {
@ -1450,9 +1454,10 @@ static void setup_socket_per_session_udp_listener_servers(void) {
(dtls_listener_relay_server_type **)allocate_super_memory_engine(turn_params.listener.ioa_eng,
sizeof(dtls_listener_relay_server_type *));
turn_params.listener.dtls_services[index + 1][0] = create_dtls_listener_server(
turn_params.listener_ifname, turn_params.listener.addrs[i], get_alt_tls_listener_port(),
turn_params.verbose, turn_params.listener.ioa_eng, NULL, 1, send_socket_to_general_relay);
turn_params.listener.dtls_services[index + 1][0] =
create_dtls_listener_server(turn_params.listener_ifname, turn_params.listener.addrs[i],
get_alt_tls_listener_port(), turn_params.sock_buf_size, turn_params.verbose,
turn_params.listener.ioa_eng, NULL, 1, send_socket_to_general_relay);
}
} else {
turn_params.listener.dtls_services[index] = NULL;

Loading…
Cancel
Save