return meshlink_set_canonical_address(handle, node, address, port);
}
+ /// Clear the canonical Address for a node.
+ /** This function clears the canonical Address for a node.
+ *
+ * @param mesh A handle which represents an instance of MeshLink.
+ * @param node A pointer to a struct meshlink_node describing the node.
+ *
+ * @return This function returns true if the address was removed, false otherwise.
+ */
+ bool clear_canonical_address(node *node) {
+ return meshlink_clear_canonical_address(handle, node);
+ }
+
/// Add an invitation address for the local node.
/** This function adds an address for the local node, which will be used only for invitation URLs.
* This address is not stored permanently.
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;
*
* If a canonical Address is set for the local node,
* it will be used for the hostname part of generated invitation URLs.
+ * If a canonical Address is set for a remote node,
+ * it is used exclusively for creating outgoing connections to that node.
*
* \memberof meshlink_node
* @param mesh A handle which represents an instance of MeshLink.
*/
bool meshlink_set_canonical_address(struct meshlink_handle *mesh, struct meshlink_node *node, const char *address, const char *port) __attribute__((__warn_unused_result__));
+/// Clear the canonical Address for a node.
+/** This function clears the canonical Address for a node.
+ *
+ * \memberof meshlink_node
+ * @param mesh A handle which represents an instance of MeshLink.
+ * @param node A pointer to a struct meshlink_node describing the node.
+ *
+ * @return This function returns true if the address was removed, false otherwise.
+ */
+bool meshlink_clear_canonical_address(struct meshlink_handle *mesh, struct meshlink_node *node) __attribute__((__warn_unused_result__));
+
/// Add an invitation address for the local node.
/** This function adds an address for the local node, which will be used only for invitation URLs.
* This address is not stored permanently.
meshlink_channel_open_ex
meshlink_channel_send
meshlink_channel_shutdown
+meshlink_clear_canonical_address
meshlink_clear_invitation_addresses
meshlink_close
meshlink_destroy
outgoing->ai = NULL;
outgoing->aip = NULL;
- outgoing->state = OUTGOING_RECENT;
+ outgoing->state = OUTGOING_END;
}
if(outgoing->state == OUTGOING_RECENT) {