X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fprotocol_edge.c;h=c000ec0595ee44e496c1a5bc2cbf1f9b8ad150b5;hb=9fdf4278f8c8c1563d45205c9e9f1bc351bd814f;hp=0879613ce34be1d9cc38c7715a8b5d88950121aa;hpb=abb24e9d71b3edb9cacf4c04361cc0dfd4e6a061;p=tinc diff --git a/src/protocol_edge.c b/src/protocol_edge.c index 0879613c..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; @@ -168,6 +171,9 @@ bool add_edge_h(connection_t *c, const char *request) { forward_request(c, request); return true; + } else { + sockaddrfree(&local_address); + return true; } } else { sockaddrfree(&local_address);