From 3a9f2423b3be9423619f74ff5ea277fcb6e28660 Mon Sep 17 00:00:00 2001 From: Guus Sliepen Date: Sun, 27 Oct 2019 14:38:18 +0100 Subject: [PATCH] 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. --- src/discovery.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) 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 { -- 2.39.5