X-Git-Url: http://git.meshlink.io/?p=meshlink;a=blobdiff_plain;f=src%2Fmeshlink.c;fp=src%2Fmeshlink.c;h=56da2a045452acf8004b0d0a04cbf1e7e2810ceb;hp=7492c46bda6a0ce7716fc27278b58db108735500;hb=c4deb6c20dceb73c0ac6baa2eb901434584e6191;hpb=77af15ef03a9777a43fc14aedd566655b1547441 diff --git a/src/meshlink.c b/src/meshlink.c index 7492c46b..56da2a04 100644 --- a/src/meshlink.c +++ b/src/meshlink.c @@ -2603,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;