X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=net.c;h=64602a4bf60e7ce934f230cb0ae9d63f5ec404f5;hp=fa9575a6e5a6aa7d857777e1ea85d5f52ec05c01;hb=fd62cf6f3c17ec9f504d3a05be4fd48f969dcb01;hpb=6b44f1fdf5fdfd18b9f77a87428a971eef0c547e diff --git a/net.c b/net.c index fa9575a6..64602a4b 100644 --- a/net.c +++ b/net.c @@ -598,25 +598,28 @@ int generic_max_transport_msg_size(int sockfd) * * \param sa The IPv4/IPv6 socket address to use. * + * \return Host string in numeric host:port format, \sa parse_url(). * \sa getnameinfo(3), services(5), nsswitch.conf(5) */ static char *host_and_port(const struct sockaddr_storage *ss) { const struct sockaddr *sa = normalize_ip_address(ss); char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV]; - static char output[sizeof(hbuf) + sizeof(sbuf) + 2]; + static char output[sizeof(hbuf) + sizeof(sbuf) + 4]; int ret; ret = getnameinfo(sa, salen(sa), hbuf, sizeof(hbuf), sbuf, sizeof(sbuf), - NI_NUMERICHOST); - if (ret == 0) { - snprintf(output, sizeof(output), "%s#%s", hbuf, sbuf); - } else { + NI_NUMERICHOST | NI_NUMERICSERV); + if (ret) { snprintf(output, sizeof(output), "(unknown)"); PARA_WARNING_LOG("hostname lookup error (%s).\n", gai_strerror(ret)); + } else if (sa->sa_family == AF_INET6) { + snprintf(output, sizeof(output), "[%s]:%s", hbuf, sbuf); + } else { + snprintf(output, sizeof(output), "%s:%s", hbuf, sbuf); } return output; } @@ -938,15 +941,17 @@ err: * This function creates a local socket for sequenced, reliable, two-way, * connection-based byte streams. * - * \return The file descriptor, on success, negative on errors. + * \return The file descriptor of the connected socket on success, negative on + * errors. * * \sa create_local_socket(), unix(7), connect(2). */ -int create_remote_socket(const char *name) +int connect_local_socket(const char *name) { struct sockaddr_un unix_addr; int fd, ret; + PARA_DEBUG_LOG("connecting to %s\n", name); ret = init_unix_addr(&unix_addr, name); if (ret < 0) return ret;