From: Guus Sliepen Date: Sun, 17 May 2015 16:44:09 +0000 (+0200) Subject: Don't send local_address in ADD_EDGE messages if it's AF_UNSPEC. X-Git-Tag: release-1.1pre12~156 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=30e839b0a1810b9cb0a2de2595cef2f8ebb06357;p=oweals%2Ftinc.git Don't send local_address in ADD_EDGE messages if it's AF_UNSPEC. --- diff --git a/src/protocol_edge.c b/src/protocol_edge.c index 76e6eb4..7478aae 100644 --- a/src/protocol_edge.c +++ b/src/protocol_edge.c @@ -37,19 +37,26 @@ bool send_add_edge(connection_t *c, const edge_t *e) { bool x; char *address, *port; - char *local_address, *local_port; sockaddr2str(&e->address, &address, &port); - sockaddr2str(&e->local_address, &local_address, &local_port); - x = send_request(c, "%d %x %s %s %s %s %x %d %s %s", ADD_EDGE, rand(), - e->from->name, e->to->name, address, port, - e->options, e->weight, local_address, local_port); + if(e->local_address.sa.sa_family) { + char *local_address, *local_port; + sockaddr2str(&e->local_address, &local_address, &local_port); + + x = send_request(c, "%d %x %s %s %s %s %x %d %s %s", ADD_EDGE, rand(), + e->from->name, e->to->name, address, port, + e->options, e->weight, local_address, local_port); + free(local_address); + free(local_port); + } else { + x = send_request(c, "%d %x %s %s %s %s %x %d", ADD_EDGE, rand(), + e->from->name, e->to->name, address, port, + e->options, e->weight); + } free(address); free(port); - free(local_address); - free(local_port); return x; }