X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Fdiscovery.c;h=da4a1d7de4e010b0b5872327056f2ba4047cb1c7;hb=902446edf822a32383c4fa4b7c13b83a568095ad;hp=a64e9e2ebcf5434785c4a183c59be8c180dee6e7;hpb=a5a8005b2d89712e124ab7295165a3e229abdad5;p=meshlink diff --git a/src/discovery.c b/src/discovery.c index a64e9e2e..da4a1d7d 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); - node_t *n = (node_t *)node; + connection_t *c = n->connection; + + node_add_recent_address(mesh, n, &naddress); - 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 { @@ -396,7 +397,7 @@ static void *discovery_loop(void *userdata) { /* Free the configuration data */ catta_server_config_free(&config); - /* Check wether creating the server object succeeded */ + /* Check whether creating the server object succeeded */ if(!mesh->catta_server) { logger(mesh, MESHLINK_ERROR, "Failed to create discovery server: %s\n", catta_strerror(error)); goto fail;