]> source.dussan.org Git - rspamd.git/commitdiff
Try to workaround V6_V6ONLY.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 13 Mar 2015 10:28:02 +0000 (10:28 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 13 Mar 2015 10:28:02 +0000 (10:28 +0000)
src/libutil/addr.c

index 1cfe2992b8413646f3b4f20036602d47d5af10da..7a9c4955790832f64f5497b56324f2d9b60ada0d 100644 (file)
@@ -487,6 +487,15 @@ rspamd_inet_address_listen (const rspamd_inet_addr_t *addr, gint type,
        }
 
        setsockopt (fd, SOL_SOCKET, SO_REUSEADDR, (const void *)&on, sizeof (gint));
+
+#ifdef HAVE_IPV6_V6ONLY
+       if (addr->af == AF_INET6) {
+               /* We need to set this flag to avoid errors */
+               on = 1;
+               setsockopt (fd, SOL_IPV6, IPV6_V6ONLY, (const void *)&on, sizeof (gint));
+       }
+#endif
+
        r = bind (fd, sa, addr->slen);
        if (r == -1) {
                if (!async || errno != EINPROGRESS) {