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/[email protected]/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/[email protected]/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 _______________________________________________ pld-cvs-commit mailing list [email protected] http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit
