Fix SPTPS condition in try_harder().
authorEtienne Dechamps <etienne@edechamps.fr>
Mon, 18 May 2015 19:35:44 +0000 (20:35 +0100)
committerEtienne Dechamps <etienne@edechamps.fr>
Mon, 18 May 2015 19:38:01 +0000 (20:38 +0100)
A condition in try_harder() is always evaluating to false when talking
to a SPTPS node because n->status.validkey_in is always false in that
case. Fix the condition so that the SPTPS status is correctly checked.

This prevented recent tinc-1.1 nodes from talking to older, pre-node-ID
tinc-1.1 nodes.

The regression was introduced in
6056f1c13bb37bf711dff9c25a6eaea99f14d31f.

src/net_packet.c

index 8313a54fd0e142c7a9106bd04bd43ddf3b5f661c..e169e2cd59b7527ab8b9514d22a401beec78be1f 100644 (file)
@@ -1350,7 +1350,7 @@ static node_t *try_harder(const sockaddr_t *from, const vpn_packet_t *pkt) {
                if(!n->status.reachable || n == myself)
                        continue;
 
-               if((n->status.sptps && !n->sptps.instate) || !n->status.validkey_in)
+               if(!n->status.validkey_in && !(n->status.sptps && n->sptps.instate))
                        continue;
 
                bool soft = false;