From a196e9b0fde1e8a67108eacd51ac663eac5a63ae Mon Sep 17 00:00:00 2001 From: Etienne Dechamps Date: Mon, 18 May 2015 21:06:16 +0100 Subject: [PATCH] Fix direct UDP communciation with pre-relaying 1.1 nodes. try_tx_sptps() gives up on UDP communication if the recipient doesn't support relaying. This is too restrictive - we only need the other node to support relaying if we actually want to relay through them. If the packet is sent directly, it's fine to send it to an old pre-node-IDs tinc-1.1 node. --- src/net_packet.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/net_packet.c b/src/net_packet.c index 4c060453..fc24c9a5 100644 --- a/src/net_packet.c +++ b/src/net_packet.c @@ -1190,15 +1190,13 @@ static void try_tx_sptps(node_t *n, bool mtu) { node_t *via = (n->via == myself) ? n->nexthop : n->via; - /* If the static relay doesn't support SPTPS, everything goes via TCP anyway. */ + /* If we do have a static relay, try everything with that one instead, if it supports relaying. */ - if((via->options >> 24) < 4) - return; - - /* If we do have a static relay, try everything with that one instead. */ - - if(via != n) + if(via != n) { + if((via->options >> 24) < 4) + return; return try_tx_sptps(via, mtu); + } /* Otherwise, try to establish UDP connectivity. */ -- 2.20.1