From 3c54765bcdf8bd6114da0cb31f45404950089e3a Mon Sep 17 00:00:00 2001 From: thorkill Date: Tue, 7 Jul 2015 23:14:08 +0200 Subject: [PATCH] Prevent tinc from forgeting e->local_address If ADD_EDGE came from tinc version 1.0.x local_address.sa.sa_family is set to 0. If it came from tinc version 1.1.x forwarded for older verion it will be 255 - AF_UNKNOWN. --- src/protocol_edge.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/protocol_edge.c b/src/protocol_edge.c index 1924ee35..c000ec05 100644 --- a/src/protocol_edge.c +++ b/src/protocol_edge.c @@ -158,8 +158,11 @@ bool add_edge_h(connection_t *c, const char *request) { // Otherwise, just ignore it. sockaddrfree(&local_address); return true; - } else if(local_address.sa.sa_family) { + } else if(local_address.sa.sa_family && local_address.sa.sa_family != AF_UNKNOWN) { // We learned a new local address for this edge. + // local_address.sa.sa_family will be 0 if we got it from older tinc versions + // local_address.sa.sa_family will be 255 (AF_UNKNOWN) if we got it from newer versions + // but for edge which does not have local_address sockaddrfree(&e->local_address); e->local_address = local_address; @@ -169,6 +172,7 @@ bool add_edge_h(connection_t *c, const char *request) { return true; } else { + sockaddrfree(&local_address); return true; } } else { -- 2.20.1