]> source.dussan.org Git - rspamd.git/commitdiff
Print unix socket address when accepting connections
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 14 Oct 2015 13:35:52 +0000 (14:35 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 14 Oct 2015 13:35:52 +0000 (14:35 +0100)
src/libutil/addr.c

index 3ddd1028915eff8543b5401ee0f8966ecbb6777b..5958e9e3e0e27d5a0788eb7ed262671edfff5e64 100644 (file)
@@ -228,8 +228,18 @@ rspamd_accept_from_socket (gint sock, rspamd_inet_addr_t **target)
        addr->slen = len;
 
        if (addr->af == AF_UNIX) {
-               addr->u.un = g_slice_alloc (sizeof (*addr->u.un));
-               memcpy (&addr->u.un->addr, &su.su, sizeof (struct sockaddr_un));
+               addr->u.un = g_slice_alloc0 (sizeof (*addr->u.un));
+               /* Get name from the listening socket */
+               len = sizeof (su);
+
+               if (getsockname (sock, &su.sa, &len) != -1) {
+                       memcpy (&addr->u.un->addr, &su.su, MIN (len,
+                                       sizeof (struct sockaddr_un)));
+               }
+               else {
+                       /* Just copy socket address */
+                       memcpy (&addr->u.un->addr, &su.sa, sizeof (struct sockaddr));
+               }
        }
        else {
                memcpy (&addr->u.in.addr, &su, MIN (len, sizeof (addr->u.in.addr)));