From: Guus Sliepen Date: Sun, 27 Oct 2019 13:38:18 +0000 (+0100) Subject: Don't close active connections when a node is discovered via Catta. X-Git-Url: http://git.meshlink.io/?p=meshlink;a=commitdiff_plain;h=3a9f2423b3be9423619f74ff5ea277fcb6e28660;ds=sidebyside Don't close active connections when a node is discovered via Catta. When a node was discovered by Catta, but we already had an active meta-connection with it, it would erroneously close that connection. --- diff --git a/src/discovery.c b/src/discovery.c index a64e9e2e..52b08f2c 100644 --- a/src/discovery.c +++ b/src/discovery.c @@ -248,20 +248,21 @@ static void discovery_resolve_callback(CattaSServiceResolver *resolver, CattaIfI } if(naddress.unknown.family != AF_UNKNOWN) { - meshlink_hint_address(mesh, (meshlink_node_t *)node, (struct sockaddr *)&naddress); + meshlink_hint_address(mesh, node, (struct sockaddr *)&naddress); node_t *n = (node_t *)node; + connection_t *c = n->connection; - if(n->connection && n->connection->outgoing) { - n->connection->outgoing->timeout = 0; + if(c && c->outgoing && !c->status.active) { + c->outgoing->timeout = 0; - if(n->connection->outgoing->ev.cb) { - timeout_set(&mesh->loop, &n->connection->outgoing->ev, &(struct timeval) { + if(c->outgoing->ev.cb) { + timeout_set(&mesh->loop, &c->outgoing->ev, &(struct timeval) { 0, 0 }); } - n->connection->last_ping_time = 0; + c->last_ping_time = 0; } } else {