net.c: Combine remote_name() and __get_sock_name().
[paraslash.git] / net.c
diff --git a/net.c b/net.c
index 139071022df39290c34bd56df88ec37808258c47..c28cf0964b0468bc9e616dc2c014536bc84e2ad0 100644 (file)
--- a/net.c
+++ b/net.c
@@ -622,11 +622,9 @@ int generic_max_transport_msg_size(int sockfd)
 }
 
 /**
- * Look up the local or remote side of a connected socket structure.
+ * Look up the remote side of a connected socket structure.
  *
  * \param fd The socket descriptor of the connected socket.
- * \param getname Either \p getsockname() for local, or \p getpeername() for
- * remote side.
  *
  * \return A static character string identifying hostname and port of the
  * chosen side in numeric host:port format.
@@ -634,7 +632,7 @@ int generic_max_transport_msg_size(int sockfd)
  * \sa getsockname(2), getpeername(2), parse_url(), getnameinfo(3),
  * services(5), nsswitch.conf(5).
  */
-static char *__get_sock_name(int fd, typeof(getsockname) getname)
+char *remote_name(int fd)
 {
        struct sockaddr_storage ss;
        const struct sockaddr *sa;
@@ -643,7 +641,7 @@ static char *__get_sock_name(int fd, typeof(getsockname) getname)
        static char output[sizeof(hbuf) + sizeof(sbuf) + 4];
        int ret;
 
-       if (getname(fd, (struct sockaddr *)&ss, &sslen) < 0) {
+       if (getpeername(fd, (struct sockaddr *)&ss, &sslen) < 0) {
                PARA_ERROR_LOG("can not determine address from fd %d: %s\n",
                        fd, strerror(errno));
                snprintf(output, sizeof(output), "(unknown)");
@@ -663,19 +661,6 @@ static char *__get_sock_name(int fd, typeof(getsockname) getname)
        return output;
 }
 
-/**
- * Look up the remote side of a connected socket structure.
- *
- * \param sockfd The file descriptor of the socket.
- *
- * \return A pointer to a static buffer containing hostname an port. This
- * buffer must not be freed by the caller.
- */
-char *remote_name(int sockfd)
-{
-       return __get_sock_name(sockfd, getpeername);
-}
-
 /**
  * Extract IPv4 or IPv6-mapped-IPv4 address from sockaddr_storage.
  *
@@ -863,8 +848,7 @@ static int init_unix_addr(struct sockaddr_un *u, const char *name)
  * Prepare, create, and bind a socket for local communication.
  *
  * \param name The socket pathname.
- * \param unix_addr Pointer to the \p AF_UNIX socket structure.
- * \param mode The desired mode of the socket.
+ * \param mode The desired permissions of the socket.
  *
  * This function creates a local socket for sequenced, reliable,
  * two-way, connection-based byte streams.
@@ -875,19 +859,19 @@ static int init_unix_addr(struct sockaddr_un *u, const char *name)
  * \sa bind(2)
  * \sa chmod(2)
  */
-int create_local_socket(const char *name, struct sockaddr_un *unix_addr,
-               mode_t mode)
+int create_local_socket(const char *name, mode_t mode)
 {
+       struct sockaddr_un unix_addr;
        int fd, ret;
 
-       ret = init_unix_addr(unix_addr, name);
+       ret = init_unix_addr(&unix_addr, name);
        if (ret < 0)
                return ret;
        ret = socket(PF_UNIX, SOCK_STREAM, 0);
        if (ret < 0)
                return -ERRNO_TO_PARA_ERROR(errno);
        fd = ret;
-       ret = bind(fd, (struct sockaddr *) unix_addr, UNIX_PATH_MAX);
+       ret = bind(fd, (struct sockaddr *)&unix_addr, UNIX_PATH_MAX);
        if (ret < 0) {
                ret = -ERRNO_TO_PARA_ERROR(errno);
                goto err;