]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
Added net_getunixname().
authorTimo Sirainen <tss@iki.fi>
Mon, 31 Aug 2009 21:04:27 +0000 (17:04 -0400)
committerTimo Sirainen <tss@iki.fi>
Mon, 31 Aug 2009 21:04:27 +0000 (17:04 -0400)
--HG--
branch : HEAD

src/lib/network.c
src/lib/network.h

index 7c621c17076e39c90b892647d7c967ed63fa3182..cb31049de0a69290278ee39acda4727736a52128 100644 (file)
@@ -589,6 +589,21 @@ int net_getpeername(int fd, struct ip_addr *addr, unsigned int *port)
        return 0;
 }
 
+int net_getunixname(int fd, const char **name_r)
+{
+       struct sockaddr_un sa;
+       socklen_t addrlen = sizeof(sa);
+
+       if (getsockname(fd, (void *)&sa, &addrlen) < 0)
+               return -1;
+       if (sa.sun_family != AF_UNIX) {
+               errno = ENOTSOCK;
+               return -1;
+       }
+       *name_r = t_strdup(sa.sun_path);
+       return 0;
+}
+
 const char *net_ip2addr(const struct ip_addr *ip)
 {
 #ifdef HAVE_IPV6
index e4623d9bcef5da986953e00e802fad7d4b0204ec..916f49c569e75deff49ea1f192c130389dd21374 100644 (file)
@@ -95,6 +95,8 @@ int net_hosterror_notfound(int error) ATTR_CONST;
 int net_getsockname(int fd, struct ip_addr *addr, unsigned int *port);
 /* Get socket remote address/port */
 int net_getpeername(int fd, struct ip_addr *addr, unsigned int *port);
+/* Get UNIX socket name. */
+int net_getunixname(int fd, const char **name_r);
 
 /* Returns ip_addr as string, or NULL if ip is invalid. */
 const char *net_ip2addr(const struct ip_addr *ip);