X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Fdiscovery.c;h=52b08f2c8b008e768b94674ade053d59b075f439;hb=fe5563f92021618b4a8b41e412c73d8364fcaf6e;hp=a64e9e2ebcf5434785c4a183c59be8c180dee6e7;hpb=a5a8005b2d89712e124ab7295165a3e229abdad5;p=meshlink 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 {