]> git.meshlink.io Git - meshlink/blobdiff - src/meshlink.c
Don't use fast timeouts for fully established connections.
[meshlink] / src / meshlink.c
index f949c2c7da8df9acd9999418c79cf4a736635ada..56da2a045452acf8004b0d0a04cbf1e7e2810ceb 100644 (file)
@@ -2583,11 +2583,7 @@ bool meshlink_set_canonical_address(meshlink_handle_t *mesh, meshlink_node_t *no
 
        char *canonical_address;
 
-       if(port) {
-               xasprintf(&canonical_address, "%s %s", address, port);
-       } else {
-               canonical_address = xstrdup(address);
-       }
+       xasprintf(&canonical_address, "%s %s", address, port ? port : mesh->myport);
 
        if(pthread_mutex_lock(&mesh->mutex) != 0) {
                abort();
@@ -2607,6 +2603,30 @@ bool meshlink_set_canonical_address(meshlink_handle_t *mesh, meshlink_node_t *no
        return config_sync(mesh, "current");
 }
 
+bool meshlink_clear_canonical_address(meshlink_handle_t *mesh, meshlink_node_t *node) {
+       if(!mesh || !node) {
+               meshlink_errno = MESHLINK_EINVAL;
+               return false;
+       }
+
+       if(pthread_mutex_lock(&mesh->mutex) != 0) {
+               abort();
+       }
+
+       node_t *n = (node_t *)node;
+       free(n->canonical_address);
+       n->canonical_address = NULL;
+
+       if(!node_write_config(mesh, n)) {
+               pthread_mutex_unlock(&mesh->mutex);
+               return false;
+       }
+
+       pthread_mutex_unlock(&mesh->mutex);
+
+       return config_sync(mesh, "current");
+}
+
 bool meshlink_add_invitation_address(struct meshlink_handle *mesh, const char *address, const char *port) {
        if(!mesh || !address) {
                meshlink_errno = MESHLINK_EINVAL;