From: Guus Sliepen Date: Mon, 7 Sep 2020 15:58:23 +0000 (+0200) Subject: Always ensure we store a port number when setting the canonical address. X-Git-Url: http://git.meshlink.io/?p=meshlink;a=commitdiff_plain;h=5a8e05640dfa2db62d3a4afe82d38137355733d4 Always ensure we store a port number when setting the canonical address. --- diff --git a/src/meshlink.c b/src/meshlink.c index f949c2c7..7492c46b 100644 --- a/src/meshlink.c +++ b/src/meshlink.c @@ -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(); diff --git a/src/meshlink.h b/src/meshlink.h index 09a0028d..3a23eb08 100644 --- a/src/meshlink.h +++ b/src/meshlink.h @@ -822,7 +822,7 @@ bool meshlink_set_canonical_address(struct meshlink_handle *mesh, struct meshlin * @param mesh A handle which represents an instance of MeshLink. * @param address A nul-terminated C string containing the address, which can be either in numeric format or a hostname. * @param port A nul-terminated C string containing the port, which can be either in numeric or symbolic format. - * If it is NULL, the listening port's number will be used. + * If it is NULL, the current listening port's number will be used. * * @return This function returns true if the address was added, false otherwise. */ @@ -953,6 +953,9 @@ int meshlink_get_port(struct meshlink_handle *mesh) __attribute__((__warn_unused * that the other nodes may no longer be able to initiate connections to the local node, * since they will try to connect to the previously configured port. * + * Note that if a canonical address has been set for the local node, + * you might need to call meshlink_set_canonical_address() again to ensure it includes the new port number. + * * \memberof meshlink_handle * @param mesh A handle which represents an instance of MeshLink. * @param port The port number to listen on. This must be between 0 and 65535.