packages: tigervnc/tigervnc.spec, tigervnc/tigervnc-ipv6.patch (NEW) - rel ...

baggins baggins at pld-linux.org
Thu Sep 1 12:54:05 CEST 2011


Author: baggins                      Date: Thu Sep  1 10:54:05 2011 GMT
Module: packages                      Tag: HEAD
---- Log message:
- rel 4
- ipv6 support for vnc server and listem mode of client
  http://www.mail-archive.com/tigervnc-devel@lists.sourceforge.net/msg01287.html

---- Files affected:
packages/tigervnc:
   tigervnc.spec (1.42 -> 1.43) , tigervnc-ipv6.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: packages/tigervnc/tigervnc.spec
diff -u packages/tigervnc/tigervnc.spec:1.42 packages/tigervnc/tigervnc.spec:1.43
--- packages/tigervnc/tigervnc.spec:1.42	Wed Aug 31 22:04:41 2011
+++ packages/tigervnc/tigervnc.spec	Thu Sep  1 12:54:00 2011
@@ -8,7 +8,7 @@
 Summary(pl.UTF-8):	System zdalnego dostępu TigerVNC
 Name:		tigervnc
 Version:	1.1.0
-Release:	3
+Release:	4
 License:	GPL v2
 Group:		X11/Applications/Networking
 Source0:	http://dl.sourceforge.net/tigervnc/1.1.0/%{name}-%{version}.tar.gz
@@ -19,6 +19,7 @@
 Patch2:		%{name}-rh102434.patch
 Patch3:		%{name}-viewer-reparent.patch
 Patch4:		%{name}-as-needed.patch
+Patch5:		%{name}-ipv6.patch
 URL:		http://www.tigervnc.com/
 BuildRequires:	ImageMagick
 BuildRequires:	ImageMagick-coder-png
@@ -170,6 +171,7 @@
 %patch2 -p1
 %patch3 -p1
 %patch4 -p1
+%patch5 -p0
 
 cp -a %{_usrsrc}/xorg-xserver-server-%{_xserverver}/* unix/xserver
 cd unix/xserver
@@ -302,6 +304,11 @@
 All persons listed below can be reached at <cvs_login>@pld-linux.org
 
 $Log$
+Revision 1.43  2011/09/01 10:54:00  baggins
+- rel 4
+- ipv6 support for vnc server and listem mode of client
+  http://www.mail-archive.com/tigervnc-devel@lists.sourceforge.net/msg01287.html
+
 Revision 1.42  2011/08/31 20:04:41  baggins
 - no more snap
 

================================================================
Index: packages/tigervnc/tigervnc-ipv6.patch
diff -u /dev/null packages/tigervnc/tigervnc-ipv6.patch:1.1
--- /dev/null	Thu Sep  1 12:54:05 2011
+++ packages/tigervnc/tigervnc-ipv6.patch	Thu Sep  1 12:54:00 2011
@@ -0,0 +1,101 @@
+--- common/network/TcpSocket.cxx.orig	2010-02-12 03:19:32.000000000 -0600
++++ common/network/TcpSocket.cxx	2011-04-11 10:58:52.000000000 -0500
+@@ -339,9 +339,38 @@
+     return;
+   }
+ 
++  bool use_ipv6;
++  int af;
++#ifdef AF_INET6
++  // - localhostOnly will mean "127.0.0.1 only", no IPv6
++  if (use_ipv6 = !localhostOnly)
++    af = AF_INET6;
++  else
++    af = AF_INET;
++#else
++  use_ipv6 = false;
++  af = AF_INET;
++#endif
++
+   initSockets();
+-  if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
+-    throw SocketException("unable to create listening socket", errorNumber);
++  if ((fd = socket(af, SOCK_STREAM, 0)) < 0) {
++    // - Socket creation failed
++    if (use_ipv6) {
++      // - We were trying to make an IPv6-capable socket - try again, but IPv4-only
++      use_ipv6 = false;
++      af = AF_INET;
++      fd = socket(af, SOCK_STREAM, 0);
++    }
++    if (fd < 0)
++      throw SocketException("unable to create listening socket", errorNumber);
++  } else {
++    // - Socket creation succeeded
++    if (use_ipv6) {
++      // - 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));
++    }
++  }
+ 
+ #ifndef WIN32
+   // - By default, close the socket on exec()
+@@ -358,27 +387,39 @@
+ 
+   // - Bind it to the desired port
+   struct sockaddr_in addr;
+-  memset(&addr, 0, sizeof(addr));
+-  addr.sin_family = AF_INET;
+-
+-  if (localhostOnly) {
+-    addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
+-  } else if (listenaddr != NULL) {
++  struct sockaddr_in6 addr6;
++  struct sockaddr *sa;
++  int sa_len;
++
++  if (use_ipv6) {
++    sa_len = sizeof(addr6);
++    memset(&addr6, 0, sa_len);
++    addr6.sin6_family = af;
++    addr6.sin6_port = htons(port);
++    sa = (struct sockaddr*) &addr6;
++  } else {
++    sa_len = sizeof(addr);
++    memset(&addr, 0, sa_len);
++    addr.sin_family = af;
++    addr.sin_port = htons(port);
++    if (localhostOnly)
++      addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
++    else if (listenaddr != NULL) {
+ #ifdef HAVE_INET_ATON
+-    if (inet_aton(listenaddr, &addr.sin_addr) == 0)
++      if (inet_aton(listenaddr, &addr.sin_addr) == 0)
+ #else
+-    /* Some systems (e.g. Windows) do not have inet_aton, sigh */
+-    if ((addr.sin_addr.s_addr = inet_addr(listenaddr)) == INADDR_NONE)
++        /* Some systems (e.g. Windows) do not have inet_aton, sigh */
++        if ((addr.sin_addr.s_addr = inet_addr(listenaddr)) == INADDR_NONE)
+ #endif
+-    {
+-      closesocket(fd);
+-      throw Exception("invalid network interface address: %s", listenaddr);
+-    }
+-  } else
+-    addr.sin_addr.s_addr = htonl(INADDR_ANY); /* Bind to 0.0.0.0 by default. */
+-
+-  addr.sin_port = htons(port);
+-  if (bind(fd, (struct sockaddr *)&addr, sizeof(addr)) < 0) {
++        {
++          closesocket(fd);
++          throw Exception("invalid network interface address: %s", listenaddr);
++        }
++    } else
++      addr.sin_addr.s_addr = htonl(INADDR_ANY); /* Bind to 0.0.0.0 by default. */
++    sa = (struct sockaddr*) &addr;
++  }
++  if (bind(fd, sa, sa_len) < 0) {
+     int e = errorNumber;
+     closesocket(fd);
+     throw SocketException("unable to bind listening socket", e);
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/tigervnc/tigervnc.spec?r1=1.42&r2=1.43&f=u



More information about the pld-cvs-commit mailing list