Sophie

Sophie

distrib > Fedora > 13 > i386 > media > updates-src > by-pkgid > 2a4fbd3ed20314308cb13c049ab27cb4 > files > 15

vsftpd-2.3.4-1.fc13.src.rpm

diff -up vsftpd-2.2.2/standalone.c.v6only vsftpd-2.2.2/standalone.c
--- vsftpd-2.2.2/standalone.c.v6only	2010-05-14 16:09:38.181388723 +0200
+++ vsftpd-2.2.2/standalone.c	2010-05-14 16:09:38.207398800 +0200
@@ -77,6 +77,7 @@ vsf_standalone_main(void)
   else
   {
     listen_sock = vsf_sysutil_get_ipv6_sock();
+    vsf_sysutil_v6only(listen_sock);
   }
   vsf_sysutil_activate_reuseaddr(listen_sock);
 
diff -up vsftpd-2.2.2/sysutil.c.v6only vsftpd-2.2.2/sysutil.c
--- vsftpd-2.2.2/sysutil.c.v6only	2010-05-17 09:09:59.848587511 +0200
+++ vsftpd-2.2.2/sysutil.c	2010-05-17 09:11:04.965806472 +0200
@@ -649,6 +649,18 @@ vsf_sysutil_wait_get_exitcode(const stru
   status = ((struct vsf_sysutil_wait_retval*) p_waitret)->exit_status;
   return WEXITSTATUS(status);
 }
+ 
+void
+vsf_sysutil_v6only(int fd)
+{
+  int v6only = 1;
+  int retval = setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &v6only,
+                          sizeof(v6only));
+  if (retval != 0)
+  {
+    die("setsockopt: ipv6_v6only");
+  }
+}
 
 void
 vsf_sysutil_activate_keepalive(int fd)
diff -up vsftpd-2.2.2/sysutil.h.v6only vsftpd-2.2.2/sysutil.h
--- vsftpd-2.2.2/sysutil.h.v6only	2010-05-17 09:10:04.021567360 +0200
+++ vsftpd-2.2.2/sysutil.h	2010-05-17 09:11:24.343557618 +0200
@@ -264,6 +264,7 @@ int vsf_sysutil_connect_timeout(int fd,
 void vsf_sysutil_dns_resolve(struct vsf_sysutil_sockaddr** p_sockptr,
                              const char* p_name);
 /* Option setting on sockets */
+void vsf_sysutil_v6only(int fd);
 void vsf_sysutil_activate_keepalive(int fd);
 void vsf_sysutil_set_iptos_throughput(int fd);
 void vsf_sysutil_activate_reuseaddr(int fd);