Fix spurious misidentification of incoming UDP packets.
[oweals/tinc.git] / src / net_packet.c
index aef55342353cac99096822d10d41c728f34c503e..13f132565016bbe908a66bbb01ce34939b9dacec 100644 (file)
@@ -575,6 +575,7 @@ 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) {
@@ -583,12 +584,9 @@ static node_t *try_harder(const sockaddr_t *from, const vpn_packet_t *pkt) {
                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 +594,9 @@ static node_t *try_harder(const sockaddr_t *from, const vpn_packet_t *pkt) {
                break;
        }
 
+       if(hard)
+               last_hard_try = now;
+
        return n;
 }