X-Git-Url: https://www.tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fnet_packet.c;h=e4b839ef33ec5f8352a4dfc23cc08d269eedf142;hb=8587e8c0d9ac997fcd2040470c1ccf5930bc18c3;hp=fc24c9a545a6ba72bd5ec0fe505b55580e368ea9;hpb=537a9366718b39278fd4eb33b2ac568011e374cc;p=tinc diff --git a/src/net_packet.c b/src/net_packet.c index fc24c9a5..e4b839ef 100644 --- a/src/net_packet.c +++ b/src/net_packet.c @@ -1195,7 +1195,7 @@ static void try_tx_sptps(node_t *n, bool mtu) { if(via != n) { if((via->options >> 24) < 4) return; - return try_tx_sptps(via, mtu); + return try_tx(via, mtu); } /* Otherwise, try to establish UDP connectivity. */ @@ -1208,7 +1208,7 @@ static void try_tx_sptps(node_t *n, bool mtu) { while we try to establish direct connectivity. */ if(!n->status.udp_confirmed && n != n->nexthop && (n->nexthop->options >> 24) >= 4) - try_tx_sptps(n->nexthop, mtu); + try_tx(n->nexthop, mtu); } static void try_tx_legacy(node_t *n, bool mtu) { @@ -1233,6 +1233,8 @@ static void try_tx_legacy(node_t *n, bool mtu) { } void try_tx(node_t *n, bool mtu) { + if(!n->status.reachable) + return; if(n->status.sptps) try_tx_sptps(n, mtu); else @@ -1269,7 +1271,7 @@ void send_packet(node_t *n, vpn_packet_t *packet) { if(n->status.sptps) { send_sptps_packet(n, packet); - try_tx_sptps(n, true); + try_tx(n, true); return; } @@ -1289,7 +1291,7 @@ void send_packet(node_t *n, vpn_packet_t *packet) { } send_udppacket(via, packet); - try_tx_legacy(via, true); + try_tx(via, true); } void broadcast_packet(const node_t *from, vpn_packet_t *packet) { @@ -1472,7 +1474,7 @@ skip_harder: if(to != myself) { send_sptps_data(to, from, 0, DATA(&pkt), pkt.len); - try_tx_sptps(to, true); + try_tx(to, true); return; } } else {