From: thorkill Date: Tue, 7 Jul 2015 21:14:08 +0000 (+0200) Subject: Prevent tinc from forgeting e->local_address X-Git-Tag: release-1.1pre12~102 X-Git-Url: https://tinc-vpn.org/git/browse?p=tinc;a=commitdiff_plain;h=3c54765bcdf8bd6114da0cb31f45404950089e3a 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. --- 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 {