Skip to content

Commit f39aac0

Browse files
committed
feat: Allow custom network functions.
The idea here is to have a `Network` object that contains functions for network operations and an optional userdata object that can manage those network operations. This allows e.g. a fuzzer to replace the network functions with no-ops or fuzzer inputs, reducing the need for `#ifdef`s.
1 parent 2e3819c commit f39aac0

29 files changed

Lines changed: 584 additions & 346 deletions

auto_tests/TCP_test.c

Lines changed: 40 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ static void test_basic(void)
5353
uint8_t self_public_key[CRYPTO_PUBLIC_KEY_SIZE];
5454
uint8_t self_secret_key[CRYPTO_SECRET_KEY_SIZE];
5555
crypto_new_keypair(self_public_key, self_secret_key);
56-
TCP_Server *tcp_s = new_TCP_server(logger, USE_IPV6, NUM_PORTS, ports, self_secret_key, nullptr);
56+
const Network *ns = system_network();
57+
TCP_Server *tcp_s = new_TCP_server(logger, ns, USE_IPV6, NUM_PORTS, ports, self_secret_key, nullptr);
5758
ck_assert_msg(tcp_s != nullptr, "Failed to create a TCP relay server.");
5859
ck_assert_msg(tcp_server_listen_count(tcp_s) == NUM_PORTS,
5960
"Failed to bind a TCP relay server to all %d attempted ports.", NUM_PORTS);
@@ -65,14 +66,14 @@ static void test_basic(void)
6566

6667
// Check all opened ports for connectivity.
6768
for (uint8_t i = 0; i < NUM_PORTS; i++) {
68-
sock = net_socket(net_family_ipv6, TOX_SOCK_STREAM, TOX_PROTO_TCP);
69+
sock = net_socket(ns, net_family_ipv6, TOX_SOCK_STREAM, TOX_PROTO_TCP);
6970
localhost.port = net_htons(ports[i]);
7071
bool ret = net_connect(logger, sock, &localhost);
7172
ck_assert_msg(ret, "Failed to connect to created TCP relay server on port %d (%d).", ports[i], errno);
7273

7374
// Leave open one connection for the next test.
7475
if (i + 1 < NUM_PORTS) {
75-
kill_sock(sock);
76+
kill_sock(ns, sock);
7677
}
7778
}
7879

@@ -99,21 +100,21 @@ static void test_basic(void)
99100
"encrypt_data() call failed.");
100101

101102
// Sending the handshake
102-
ck_assert_msg(net_send(logger, sock, handshake, TCP_CLIENT_HANDSHAKE_SIZE - 1,
103+
ck_assert_msg(net_send(ns, logger, sock, handshake, TCP_CLIENT_HANDSHAKE_SIZE - 1,
103104
&localhost) == TCP_CLIENT_HANDSHAKE_SIZE - 1,
104105
"An attempt to send the initial handshake minus last byte failed.");
105106

106107
do_TCP_server_delay(tcp_s, mono_time, 50);
107108

108-
ck_assert_msg(net_send(logger, sock, handshake + (TCP_CLIENT_HANDSHAKE_SIZE - 1), 1, &localhost) == 1,
109+
ck_assert_msg(net_send(ns, logger, sock, handshake + (TCP_CLIENT_HANDSHAKE_SIZE - 1), 1, &localhost) == 1,
109110
"The attempt to send the last byte of handshake failed.");
110111

111112
do_TCP_server_delay(tcp_s, mono_time, 50);
112113

113114
// Receiving server response and decrypting it
114115
uint8_t response[TCP_SERVER_HANDSHAKE_SIZE];
115116
uint8_t response_plain[TCP_HANDSHAKE_PLAIN_SIZE];
116-
ck_assert_msg(net_recv(logger, sock, response, TCP_SERVER_HANDSHAKE_SIZE, &localhost) == TCP_SERVER_HANDSHAKE_SIZE,
117+
ck_assert_msg(net_recv(ns, logger, sock, response, TCP_SERVER_HANDSHAKE_SIZE, &localhost) == TCP_SERVER_HANDSHAKE_SIZE,
117118
"Could/did not receive a server response to the initial handshake.");
118119
ret = decrypt_data(self_public_key, f_secret_key, response, response + CRYPTO_NONCE_SIZE,
119120
TCP_SERVER_HANDSHAKE_SIZE - CRYPTO_NONCE_SIZE, response_plain);
@@ -142,7 +143,7 @@ static void test_basic(void)
142143
msg_length = sizeof(r_req) - i;
143144
}
144145

145-
ck_assert_msg(net_send(logger, sock, r_req + i, msg_length, &localhost) == msg_length,
146+
ck_assert_msg(net_send(ns, logger, sock, r_req + i, msg_length, &localhost) == msg_length,
146147
"Failed to send request after completing the handshake.");
147148
i += msg_length;
148149

@@ -153,7 +154,7 @@ static void test_basic(void)
153154

154155
// Receiving the second response and verifying its validity
155156
uint8_t packet_resp[4096];
156-
int recv_data_len = net_recv(logger, sock, packet_resp, 2 + 2 + CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_MAC_SIZE, &localhost);
157+
int recv_data_len = net_recv(ns, logger, sock, packet_resp, 2 + 2 + CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_MAC_SIZE, &localhost);
157158
ck_assert_msg(recv_data_len == 2 + 2 + CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_MAC_SIZE,
158159
"Failed to receive server response to request. %d", recv_data_len);
159160
memcpy(&size, packet_resp, 2);
@@ -171,7 +172,7 @@ static void test_basic(void)
171172
ck_assert_msg(pk_equal(packet_resp_plain + 2, f_public_key), "Server sent the wrong public key.");
172173

173174
// Closing connections.
174-
kill_sock(sock);
175+
kill_sock(ns, sock);
175176
kill_TCP_server(tcp_s);
176177

177178
logger_kill(logger);
@@ -180,17 +181,19 @@ static void test_basic(void)
180181

181182
struct sec_TCP_con {
182183
Socket sock;
184+
const Network *ns;
183185
uint8_t public_key[CRYPTO_PUBLIC_KEY_SIZE];
184186
uint8_t recv_nonce[CRYPTO_NONCE_SIZE];
185187
uint8_t sent_nonce[CRYPTO_NONCE_SIZE];
186188
uint8_t shared_key[CRYPTO_SHARED_KEY_SIZE];
187189
};
188190

189-
static struct sec_TCP_con *new_TCP_con(const Logger *logger, TCP_Server *tcp_s, Mono_Time *mono_time)
191+
static struct sec_TCP_con *new_TCP_con(const Logger *logger, const Network *ns, TCP_Server *tcp_s, Mono_Time *mono_time)
190192
{
191193
struct sec_TCP_con *sec_c = (struct sec_TCP_con *)malloc(sizeof(struct sec_TCP_con));
192194
ck_assert(sec_c != nullptr);
193-
Socket sock = net_socket(net_family_ipv6, TOX_SOCK_STREAM, TOX_PROTO_TCP);
195+
sec_c->ns = ns;
196+
Socket sock = net_socket(ns, net_family_ipv6, TOX_SOCK_STREAM, TOX_PROTO_TCP);
194197

195198
IP_Port localhost;
196199
localhost.ip = get_loopback();
@@ -216,20 +219,20 @@ static struct sec_TCP_con *new_TCP_con(const Logger *logger, TCP_Server *tcp_s,
216219
ck_assert_msg(ret == TCP_CLIENT_HANDSHAKE_SIZE - (CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_NONCE_SIZE),
217220
"Failed to encrypt the outgoing handshake.");
218221

219-
ck_assert_msg(net_send(logger, sock, handshake, TCP_CLIENT_HANDSHAKE_SIZE - 1,
222+
ck_assert_msg(net_send(ns, logger, sock, handshake, TCP_CLIENT_HANDSHAKE_SIZE - 1,
220223
&localhost) == TCP_CLIENT_HANDSHAKE_SIZE - 1,
221224
"Failed to send the first portion of the handshake to the TCP relay server.");
222225

223226
do_TCP_server_delay(tcp_s, mono_time, 50);
224227

225-
ck_assert_msg(net_send(logger, sock, handshake + (TCP_CLIENT_HANDSHAKE_SIZE - 1), 1, &localhost) == 1,
228+
ck_assert_msg(net_send(ns, logger, sock, handshake + (TCP_CLIENT_HANDSHAKE_SIZE - 1), 1, &localhost) == 1,
226229
"Failed to send last byte of handshake.");
227230

228231
do_TCP_server_delay(tcp_s, mono_time, 50);
229232

230233
uint8_t response[TCP_SERVER_HANDSHAKE_SIZE];
231234
uint8_t response_plain[TCP_HANDSHAKE_PLAIN_SIZE];
232-
ck_assert_msg(net_recv(logger, sock, response, TCP_SERVER_HANDSHAKE_SIZE, &localhost) == TCP_SERVER_HANDSHAKE_SIZE,
235+
ck_assert_msg(net_recv(sec_c->ns, logger, sock, response, TCP_SERVER_HANDSHAKE_SIZE, &localhost) == TCP_SERVER_HANDSHAKE_SIZE,
233236
"Failed to receive server handshake response.");
234237
ret = decrypt_data(tcp_server_public_key(tcp_s), f_secret_key, response, response + CRYPTO_NONCE_SIZE,
235238
TCP_SERVER_HANDSHAKE_SIZE - CRYPTO_NONCE_SIZE, response_plain);
@@ -242,7 +245,7 @@ static struct sec_TCP_con *new_TCP_con(const Logger *logger, TCP_Server *tcp_s,
242245

243246
static void kill_TCP_con(struct sec_TCP_con *con)
244247
{
245-
kill_sock(con->sock);
248+
kill_sock(con->ns, con->sock);
246249
free(con);
247250
}
248251

@@ -265,7 +268,7 @@ static int write_packet_TCP_test_connection(const Logger *logger, struct sec_TCP
265268
localhost.ip = get_loopback();
266269
localhost.port = 0;
267270

268-
ck_assert_msg(net_send(logger, con->sock, packet, SIZEOF_VLA(packet), &localhost) == SIZEOF_VLA(packet),
271+
ck_assert_msg(net_send(con->ns, logger, con->sock, packet, SIZEOF_VLA(packet), &localhost) == SIZEOF_VLA(packet),
269272
"Failed to send a packet.");
270273
return 0;
271274
}
@@ -276,7 +279,7 @@ static int read_packet_sec_TCP(const Logger *logger, struct sec_TCP_con *con, ui
276279
localhost.ip = get_loopback();
277280
localhost.port = 0;
278281

279-
int rlen = net_recv(logger, con->sock, data, length, &localhost);
282+
int rlen = net_recv(con->ns, logger, con->sock, data, length, &localhost);
280283
ck_assert_msg(rlen == length, "Did not receive packet of correct length. Wanted %i, instead got %i", length, rlen);
281284
rlen = decrypt_data_symmetric(con->shared_key, con->recv_nonce, data + 2, length - 2, data);
282285
ck_assert_msg(rlen != -1, "Failed to decrypt a received packet from the Relay server.");
@@ -288,17 +291,18 @@ static void test_some(void)
288291
{
289292
Mono_Time *mono_time = mono_time_new();
290293
Logger *logger = logger_new();
294+
const Network *ns = system_network();
291295

292296
uint8_t self_public_key[CRYPTO_PUBLIC_KEY_SIZE];
293297
uint8_t self_secret_key[CRYPTO_SECRET_KEY_SIZE];
294298
crypto_new_keypair(self_public_key, self_secret_key);
295-
TCP_Server *tcp_s = new_TCP_server(logger, USE_IPV6, NUM_PORTS, ports, self_secret_key, nullptr);
299+
TCP_Server *tcp_s = new_TCP_server(logger, ns, USE_IPV6, NUM_PORTS, ports, self_secret_key, nullptr);
296300
ck_assert_msg(tcp_s != nullptr, "Failed to create TCP relay server");
297301
ck_assert_msg(tcp_server_listen_count(tcp_s) == NUM_PORTS, "Failed to bind to all ports.");
298302

299-
struct sec_TCP_con *con1 = new_TCP_con(logger, tcp_s, mono_time);
300-
struct sec_TCP_con *con2 = new_TCP_con(logger, tcp_s, mono_time);
301-
struct sec_TCP_con *con3 = new_TCP_con(logger, tcp_s, mono_time);
303+
struct sec_TCP_con *con1 = new_TCP_con(logger, ns, tcp_s, mono_time);
304+
struct sec_TCP_con *con2 = new_TCP_con(logger, ns, tcp_s, mono_time);
305+
struct sec_TCP_con *con3 = new_TCP_con(logger, ns, tcp_s, mono_time);
302306

303307
uint8_t requ_p[1 + CRYPTO_PUBLIC_KEY_SIZE];
304308
requ_p[0] = TCP_PACKET_ROUTING_REQUEST;
@@ -480,7 +484,8 @@ static void test_client(void)
480484
uint8_t self_public_key[CRYPTO_PUBLIC_KEY_SIZE];
481485
uint8_t self_secret_key[CRYPTO_SECRET_KEY_SIZE];
482486
crypto_new_keypair(self_public_key, self_secret_key);
483-
TCP_Server *tcp_s = new_TCP_server(logger, USE_IPV6, NUM_PORTS, ports, self_secret_key, nullptr);
487+
const Network *ns = system_network();
488+
TCP_Server *tcp_s = new_TCP_server(logger, ns, USE_IPV6, NUM_PORTS, ports, self_secret_key, nullptr);
484489
ck_assert_msg(tcp_s != nullptr, "Failed to create a TCP relay server.");
485490
ck_assert_msg(tcp_server_listen_count(tcp_s) == NUM_PORTS, "Failed to bind the relay server to all ports.");
486491

@@ -492,7 +497,7 @@ static void test_client(void)
492497
ip_port_tcp_s.port = net_htons(ports[random_u32() % NUM_PORTS]);
493498
ip_port_tcp_s.ip = get_loopback();
494499

495-
TCP_Client_Connection *conn = new_TCP_connection(logger, mono_time, &ip_port_tcp_s, self_public_key, f_public_key,
500+
TCP_Client_Connection *conn = new_TCP_connection(logger, mono_time, ns, &ip_port_tcp_s, self_public_key, f_public_key,
496501
f_secret_key, nullptr);
497502
do_TCP_connection(logger, mono_time, conn, nullptr);
498503
c_sleep(50);
@@ -527,7 +532,7 @@ static void test_client(void)
527532
uint8_t f2_secret_key[CRYPTO_SECRET_KEY_SIZE];
528533
crypto_new_keypair(f2_public_key, f2_secret_key);
529534
ip_port_tcp_s.port = net_htons(ports[random_u32() % NUM_PORTS]);
530-
TCP_Client_Connection *conn2 = new_TCP_connection(logger, mono_time, &ip_port_tcp_s, self_public_key, f2_public_key,
535+
TCP_Client_Connection *conn2 = new_TCP_connection(logger, mono_time, ns, &ip_port_tcp_s, self_public_key, f2_public_key,
531536
f2_secret_key, nullptr);
532537

533538
// The client should call this function (defined earlier) during the routing process.
@@ -604,6 +609,7 @@ static void test_client_invalid(void)
604609
{
605610
Mono_Time *mono_time = mono_time_new();
606611
Logger *logger = logger_new();
612+
const Network *ns = system_network();
607613

608614
uint8_t self_public_key[CRYPTO_PUBLIC_KEY_SIZE];
609615
uint8_t self_secret_key[CRYPTO_SECRET_KEY_SIZE];
@@ -616,8 +622,8 @@ static void test_client_invalid(void)
616622

617623
ip_port_tcp_s.port = net_htons(ports[random_u32() % NUM_PORTS]);
618624
ip_port_tcp_s.ip = get_loopback();
619-
TCP_Client_Connection *conn = new_TCP_connection(logger, mono_time, &ip_port_tcp_s, self_public_key, f_public_key,
620-
f_secret_key, nullptr);
625+
TCP_Client_Connection *conn = new_TCP_connection(logger, mono_time, ns, &ip_port_tcp_s,
626+
self_public_key, f_public_key, f_secret_key, nullptr);
621627

622628
// Run the client's main loop but not the server.
623629
mono_time_update(mono_time);
@@ -676,22 +682,23 @@ static void test_tcp_connection(void)
676682
{
677683
Mono_Time *mono_time = mono_time_new();
678684
Logger *logger = logger_new();
685+
const Network *ns = system_network();
679686

680687
tcp_data_callback_called = 0;
681688
uint8_t self_public_key[CRYPTO_PUBLIC_KEY_SIZE];
682689
uint8_t self_secret_key[CRYPTO_SECRET_KEY_SIZE];
683690
crypto_new_keypair(self_public_key, self_secret_key);
684-
TCP_Server *tcp_s = new_TCP_server(logger, USE_IPV6, NUM_PORTS, ports, self_secret_key, nullptr);
691+
TCP_Server *tcp_s = new_TCP_server(logger, ns, USE_IPV6, NUM_PORTS, ports, self_secret_key, nullptr);
685692
ck_assert_msg(pk_equal(tcp_server_public_key(tcp_s), self_public_key), "Wrong public key");
686693

687694
TCP_Proxy_Info proxy_info;
688695
proxy_info.proxy_type = TCP_PROXY_NONE;
689696
crypto_new_keypair(self_public_key, self_secret_key);
690-
TCP_Connections *tc_1 = new_tcp_connections(logger, mono_time, self_secret_key, &proxy_info);
697+
TCP_Connections *tc_1 = new_tcp_connections(logger, mono_time, ns, self_secret_key, &proxy_info);
691698
ck_assert_msg(pk_equal(tcp_connections_public_key(tc_1), self_public_key), "Wrong public key");
692699

693700
crypto_new_keypair(self_public_key, self_secret_key);
694-
TCP_Connections *tc_2 = new_tcp_connections(logger, mono_time, self_secret_key, &proxy_info);
701+
TCP_Connections *tc_2 = new_tcp_connections(logger, mono_time, ns, self_secret_key, &proxy_info);
695702
ck_assert_msg(pk_equal(tcp_connections_public_key(tc_2), self_public_key), "Wrong public key");
696703

697704
IP_Port ip_port_tcp_s;
@@ -782,24 +789,25 @@ static void test_tcp_connection2(void)
782789
{
783790
Mono_Time *mono_time = mono_time_new();
784791
Logger *logger = logger_new();
792+
const Network *ns = system_network();
785793

786794
tcp_oobdata_callback_called = 0;
787795
tcp_data_callback_called = 0;
788796

789797
uint8_t self_public_key[CRYPTO_PUBLIC_KEY_SIZE];
790798
uint8_t self_secret_key[CRYPTO_SECRET_KEY_SIZE];
791799
crypto_new_keypair(self_public_key, self_secret_key);
792-
TCP_Server *tcp_s = new_TCP_server(logger, USE_IPV6, NUM_PORTS, ports, self_secret_key, nullptr);
800+
TCP_Server *tcp_s = new_TCP_server(logger, ns, USE_IPV6, NUM_PORTS, ports, self_secret_key, nullptr);
793801
ck_assert_msg(pk_equal(tcp_server_public_key(tcp_s), self_public_key), "Wrong public key");
794802

795803
TCP_Proxy_Info proxy_info;
796804
proxy_info.proxy_type = TCP_PROXY_NONE;
797805
crypto_new_keypair(self_public_key, self_secret_key);
798-
TCP_Connections *tc_1 = new_tcp_connections(logger, mono_time, self_secret_key, &proxy_info);
806+
TCP_Connections *tc_1 = new_tcp_connections(logger, mono_time, ns, self_secret_key, &proxy_info);
799807
ck_assert_msg(pk_equal(tcp_connections_public_key(tc_1), self_public_key), "Wrong public key");
800808

801809
crypto_new_keypair(self_public_key, self_secret_key);
802-
TCP_Connections *tc_2 = new_tcp_connections(logger, mono_time, self_secret_key, &proxy_info);
810+
TCP_Connections *tc_2 = new_tcp_connections(logger, mono_time, ns, self_secret_key, &proxy_info);
803811
ck_assert_msg(pk_equal(tcp_connections_public_key(tc_2), self_public_key), "Wrong public key");
804812

805813
IP_Port ip_port_tcp_s;

auto_tests/auto_test_support.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -208,8 +208,9 @@ static void initialise_autotox(struct Tox_Options *options, AutoTox *autotox, ui
208208
const Run_Auto_Options *autotest_opts)
209209
{
210210
autotox->index = index;
211-
autotox->tox = tox_new_log(options, nullptr, &autotox->index);
212-
ck_assert_msg(autotox->tox != nullptr, "failed to create tox instance #%u", index);
211+
Tox_Err_New err;
212+
autotox->tox = tox_new_log(options, &err, &autotox->index);
213+
ck_assert_msg(autotox->tox != nullptr, "failed to create tox instance #%u (error = %d)", index, err);
213214

214215
set_mono_time_callback(autotox);
215216

auto_tests/onion_test.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,8 @@ static void send_onion_packet(const Networking_Core *net, const Onion_Path *path
182182
*/
183183
static Networking_Core *new_networking(const Logger *log, const IP *ip, uint16_t port)
184184
{
185-
return new_networking_ex(log, ip, port, port + (TOX_PORTRANGE_TO - TOX_PORTRANGE_FROM), nullptr);
185+
const Network *ns = system_network();
186+
return new_networking_ex(log, ns, ip, port, port + (TOX_PORTRANGE_TO - TOX_PORTRANGE_FROM), nullptr);
186187
}
187188

188189
static void test_basic(void)
@@ -426,7 +427,8 @@ static Onions *new_onions(uint16_t port, uint32_t *index)
426427
}
427428

428429
TCP_Proxy_Info inf = {{{{0}}}};
429-
on->onion_c = new_onion_client(on->log, on->mono_time, new_net_crypto(on->log, on->mono_time, dht, &inf));
430+
const Network *ns = system_network();
431+
on->onion_c = new_onion_client(on->log, on->mono_time, new_net_crypto(on->log, on->mono_time, ns, dht, &inf));
430432

431433
if (!on->onion_c) {
432434
kill_onion_announce(on->onion_a);

other/DHT_bootstrap.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,8 @@ int main(int argc, char *argv[])
145145
Mono_Time *mono_time = mono_time_new();
146146
const uint16_t start_port = PORT;
147147
const uint16_t end_port = start_port + (TOX_PORTRANGE_TO - TOX_PORTRANGE_FROM);
148-
DHT *dht = new_dht(logger, mono_time, new_networking_ex(logger, &ip, start_port, end_port, nullptr), true, true);
148+
const Network *ns = system_network();
149+
DHT *dht = new_dht(logger, mono_time, new_networking_ex(logger, ns, &ip, start_port, end_port, nullptr), true, true);
149150
Onion *onion = new_onion(logger, mono_time, dht);
150151
const Onion_Announce *onion_a = new_onion_announce(logger, mono_time, dht);
151152

@@ -166,7 +167,7 @@ int main(int argc, char *argv[])
166167
#ifdef TCP_RELAY_ENABLED
167168
#define NUM_PORTS 3
168169
uint16_t ports[NUM_PORTS] = {443, 3389, PORT};
169-
TCP_Server *tcp_s = new_TCP_server(logger, ipv6enabled, NUM_PORTS, ports, dht_get_self_secret_key(dht), onion);
170+
TCP_Server *tcp_s = new_TCP_server(logger, ns, ipv6enabled, NUM_PORTS, ports, dht_get_self_secret_key(dht), onion);
170171

171172
if (tcp_s == nullptr) {
172173
printf("TCP server failed to initialize.\n");
@@ -220,7 +221,7 @@ int main(int argc, char *argv[])
220221
int is_waiting_for_dht_connection = 1;
221222

222223
uint64_t last_LANdiscovery = 0;
223-
const Broadcast_Info *broadcast = lan_discovery_init();
224+
const Broadcast_Info *broadcast = lan_discovery_init(ns);
224225

225226
while (1) {
226227
mono_time_update(mono_time);
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
4453168947518175a5500c9d8d08cd83b0e054486da7297b2a9e0e146aadc743 /usr/local/bin/tox-bootstrapd
1+
8216f2b48b15db02c373766c9e8f898a0cf8ebb26310635b146a118d0bcf1f71 /usr/local/bin/tox-bootstrapd

other/bootstrap_daemon/src/tox-bootstrapd.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -278,14 +278,15 @@ int main(int argc, char *argv[])
278278
}
279279

280280
const uint16_t end_port = start_port + (TOX_PORTRANGE_TO - TOX_PORTRANGE_FROM);
281-
Networking_Core *net = new_networking_ex(logger, &ip, start_port, end_port, nullptr);
281+
const Network *ns = system_network();
282+
Networking_Core *net = new_networking_ex(logger, ns, &ip, start_port, end_port, nullptr);
282283

283284
if (net == nullptr) {
284285
if (enable_ipv6 && enable_ipv4_fallback) {
285286
log_write(LOG_LEVEL_WARNING, "Couldn't initialize IPv6 networking. Falling back to using IPv4.\n");
286287
enable_ipv6 = 0;
287288
ip_init(&ip, enable_ipv6);
288-
net = new_networking_ex(logger, &ip, start_port, end_port, nullptr);
289+
net = new_networking_ex(logger, ns, &ip, start_port, end_port, nullptr);
289290

290291
if (net == nullptr) {
291292
log_write(LOG_LEVEL_ERROR, "Couldn't fallback to IPv4. Exiting.\n");
@@ -411,8 +412,8 @@ int main(int argc, char *argv[])
411412
return 1;
412413
}
413414

414-
tcp_server = new_TCP_server(logger, enable_ipv6, tcp_relay_port_count, tcp_relay_ports, dht_get_self_secret_key(dht),
415-
onion);
415+
tcp_server = new_TCP_server(logger, ns, enable_ipv6, tcp_relay_port_count, tcp_relay_ports,
416+
dht_get_self_secret_key(dht), onion);
416417

417418
free(tcp_relay_ports);
418419

@@ -478,7 +479,7 @@ int main(int argc, char *argv[])
478479
Broadcast_Info *broadcast = nullptr;
479480

480481
if (enable_lan_discovery) {
481-
broadcast = lan_discovery_init();
482+
broadcast = lan_discovery_init(ns);
482483
log_write(LOG_LEVEL_INFO, "Initialized LAN discovery successfully.\n");
483484
}
484485

0 commit comments

Comments
 (0)