summaryrefslogtreecommitdiff
path: root/toxcore/onion_client.c
diff options
context:
space:
mode:
Diffstat (limited to 'toxcore/onion_client.c')
-rw-r--r--toxcore/onion_client.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/toxcore/onion_client.c b/toxcore/onion_client.c
index f8d7630b..a9eb16a0 100644
--- a/toxcore/onion_client.c
+++ b/toxcore/onion_client.c
@@ -140,8 +140,15 @@ static uint16_t random_nodes_path_onion(const Onion_Client *onion_c, Node_format
140 nodes[i] = onion_c->path_nodes[rand() % num_nodes]; 140 nodes[i] = onion_c->path_nodes[rand() % num_nodes];
141 } 141 }
142 } else { 142 } else {
143 int random_tcp = get_random_tcp_con_number(onion_c->c);
144
145 if (random_tcp == -1) {
146 return 0;
147 }
148
143 if (num_nodes >= 2) { 149 if (num_nodes >= 2) {
144 nodes[0].ip_port.ip.family = TCP_FAMILY; 150 nodes[0].ip_port.ip.family = TCP_FAMILY;
151 nodes[0].ip_port.ip.ip4.uint32 = random_tcp;
145 152
146 for (i = 1; i < max_num; ++i) { 153 for (i = 1; i < max_num; ++i) {
147 nodes[i] = onion_c->path_nodes[rand() % num_nodes]; 154 nodes[i] = onion_c->path_nodes[rand() % num_nodes];
@@ -154,6 +161,7 @@ static uint16_t random_nodes_path_onion(const Onion_Client *onion_c, Node_format
154 return 0; 161 return 0;
155 162
156 nodes[0].ip_port.ip.family = TCP_FAMILY; 163 nodes[0].ip_port.ip.family = TCP_FAMILY;
164 nodes[0].ip_port.ip.ip4.uint32 = random_tcp;
157 165
158 for (i = 1; i < max_num; ++i) { 166 for (i = 1; i < max_num; ++i) {
159 nodes[i] = onion_c->path_nodes_bs[rand() % num_nodes_bs]; 167 nodes[i] = onion_c->path_nodes_bs[rand() % num_nodes_bs];
@@ -301,7 +309,7 @@ static int send_onion_packet_tcp_udp(const Onion_Client *onion_c, const Onion_Pa
301 if (len == -1) 309 if (len == -1)
302 return -1; 310 return -1;
303 311
304 return send_tcp_onion_request(onion_c->c, packet, len); 312 return send_tcp_onion_request(onion_c->c, path->ip_port1.ip.ip4.uint32, packet, len);
305 } else { 313 } else {
306 return -1; 314 return -1;
307 } 315 }