node_t *n = (node_t *)node;
connection_t *c = n->connection;
+ n->catta_address = naddress;
node_add_recent_address(mesh, n, &naddress);
if(c && c->outgoing && !c->status.active) {
});
}
- c->last_ping_time = 0;
+ c->last_ping_time = -3600;
}
} else {
meshlink_handle_t *mesh = userdata;
assert(mesh);
+ pthread_mutex_lock(&mesh->discovery_mutex);
+
// handle catta logs
catta_set_log_function(discovery_log_cb);
fail:
- pthread_mutex_lock(&mesh->discovery_mutex);
pthread_cond_broadcast(&mesh->discovery_cond);
pthread_mutex_unlock(&mesh->discovery_mutex);
assert(!mesh->discovery_threadstarted);
assert(!mesh->catta_servicetype);
+ pthread_mutex_lock(&mesh->discovery_mutex);
+
// Start the discovery thread
if(pthread_create(&mesh->discovery_thread, NULL, discovery_loop, mesh) != 0) {
+ pthread_mutex_unlock(&mesh->discovery_mutex);
logger(mesh, MESHLINK_ERROR, "Could not start discovery thread: %s\n", strerror(errno));
memset(&mesh->discovery_thread, 0, sizeof(mesh)->discovery_thread);
return false;
}
- pthread_mutex_lock(&mesh->discovery_mutex);
pthread_cond_wait(&mesh->discovery_cond, &mesh->discovery_mutex);
pthread_mutex_unlock(&mesh->discovery_mutex);