X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fnet_packet.c;h=e732ef8b6a38b8b413a25b4d868a38e9b07223d1;hb=0aa86d4b8b3010522e6de8842f5bd29004ba3df6;hp=aef55342353cac99096822d10d41c728f34c503e;hpb=f99661a4ca5bacff47239ce7978b9c9948917c54;p=tinc diff --git a/src/net_packet.c b/src/net_packet.c index aef55342..e732ef8b 100644 --- a/src/net_packet.c +++ b/src/net_packet.c @@ -575,20 +575,21 @@ static node_t *try_harder(const sockaddr_t *from, const vpn_packet_t *pkt) { avl_node_t *node; edge_t *e; node_t *n = NULL; + bool hard = false; static time_t last_hard_try = 0; for(node = edge_weight_tree->head; node; node = node->next) { e = node->data; + if(e->to == myself) + continue; + if(sockaddrcmp_noport(from, &e->address)) { if(last_hard_try == now) continue; - last_hard_try = now; + hard = true; } - if(!n) - n = e->to; - if(!try_mac(e->to, pkt)) continue; @@ -596,6 +597,9 @@ static node_t *try_harder(const sockaddr_t *from, const vpn_packet_t *pkt) { break; } + if(hard) + last_hard_try = now; + return n; }