X-Git-Url: https://www.tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fprotocol_edge.c;h=c000ec0595ee44e496c1a5bc2cbf1f9b8ad150b5;hb=3c54765bcdf8bd6114da0cb31f45404950089e3a;hp=1924ee35e3733316654c915b1d25207e18f32134;hpb=1e7ef381980a5c4c84d699522265290dde5ac728;p=tinc 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 {