]> source.dussan.org Git - tigervnc.git/commitdiff
Added more #ifdefs for IPv6.
authorTim Waugh <twaugh@redhat.com>
Mon, 17 Nov 2014 14:04:07 +0000 (14:04 +0000)
committerTim Waugh <twaugh@redhat.com>
Mon, 17 Nov 2014 14:04:07 +0000 (14:04 +0000)
common/network/TcpSocket.cxx

index 65a1a9930eb24f7f4f2407cbb08bb07b0f8816d2..72f1545d9870294bb65607a43140f8969ee87836 100644 (file)
@@ -358,7 +358,7 @@ TcpListener::TcpListener(const char *listenaddr, int port, bool localhostOnly,
 
   bool use_ipv6;
   int af;
-#ifdef AF_INET6
+#ifdef HAVE_GETADDRINFO
   use_ipv6 = true;
   af = AF_INET6;
 #else
@@ -380,9 +380,14 @@ TcpListener::TcpListener(const char *listenaddr, int port, bool localhostOnly,
   } else {
     // - Socket creation succeeded
     if (use_ipv6) {
+#ifdef IPV6_V6ONLY
       // - We made an IPv6-capable socket, and we need it to do IPv4 too
       int opt = 0;
       setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &opt, sizeof(opt));
+#else
+      vlog.error("IPV6_V6ONLY support is missing. "
+                "IPv4 clients may not be able to connect.");
+#endif
     }
   }
 
@@ -401,9 +406,13 @@ TcpListener::TcpListener(const char *listenaddr, int port, bool localhostOnly,
 
   // - Bind it to the desired port
   struct sockaddr_in addr;
+#ifdef HAVE_GETADDRINFO
   struct sockaddr_in6 addr6;
+#endif
   struct sockaddr *sa;
   int sa_len;
+
+#ifdef HAVE_GETADDRINFO
   if (use_ipv6) {
     memset(&addr6, 0, (sa_len = sizeof(addr6)));
     addr6.sin6_family = af;
@@ -424,6 +433,7 @@ TcpListener::TcpListener(const char *listenaddr, int port, bool localhostOnly,
     if (use_ipv6)
       sa = (struct sockaddr *)&addr6;
   }
+#endif
 
   if (!use_ipv6) {
     memset(&addr, 0, (sa_len = sizeof(addr)));