diff --git a/pve-vncterm.spec b/pve-vncterm.spec index 80573c2..e4bca57 100644 --- a/pve-vncterm.spec +++ b/pve-vncterm.spec @@ -2,8 +2,8 @@ Name: pve-%sname Summary: VNC Terminal Emulator -Version: 1.5.2 -Release: alt3 +Version: 1.6.2 +Release: alt1 License: GPLv2 Group: Networking/WWW Url: https://git.proxmox.com/ @@ -15,7 +15,7 @@ Source2: unifont.hex Patch0: %sname-alt.patch ExclusiveArch: x86_64 aarch64 -BuildRequires: libgnutls-devel libjpeg-devel perl-Pod-Usage zlib-devel libpng-devel +BuildRequires: cmake libgnutls-devel libjpeg-devel perl-Pod-Usage zlib-devel libpng-devel %description With vncterm you can start commands and export its standard input and @@ -40,6 +40,9 @@ install -m0644 %SOURCE2 . %_man1dir/%sname.1* %changelog +* Fri Sep 04 2020 Valery Inozemtsev 1.6.2-alt1 +- 1.6-2 + * Wed Aug 28 2019 Valery Inozemtsev 1.5.2-alt3 - added build for aarch64 diff --git a/vncterm-alt.patch b/vncterm-alt.patch index fc92411..4c9d173 100644 --- a/vncterm-alt.patch +++ b/vncterm-alt.patch @@ -1,6 +1,13 @@ ---- vncterm/Makefile.alt 2017-06-07 14:53:50.008267568 +0300 -+++ vncterm/Makefile 2018-10-03 10:58:00.388292178 +0300 -@@ -18,7 +18,7 @@ SNAP=${PACKAGE}-${VERSION}-${CDATE}.tar. +--- vncterm/Makefile.alt 2020-07-15 09:08:24.000000000 +0000 ++++ vncterm/Makefile 2020-09-04 09:32:58.598217300 +0000 +@@ -1,6 +1,3 @@ +-include /usr/share/dpkg/pkg-info.mk +-include /usr/share/dpkg/architecture.mk +- + PACKAGE=vncterm + GITVERSION:=$(shell cat .git/refs/heads/master) + +@@ -19,7 +16,7 @@ VNC_LIBS := -lnsl -lpthread -lz -ljpeg - all: vncterm font.data: genfont2 @@ -9,19 +16,30 @@ mv font.data.tmp font.data genfont2: genfont2.c -@@ -30,12 +30,12 @@ ${VNCLIB}: ${VNCSRC} +@@ -31,14 +28,11 @@ ${VNCLIB}: ${VNCSRC} rm -rf ${VNCDIR} tar xf ${VNCSRC} ln -s ../vncpatches ${VNCDIR}/patches - cd ${VNCDIR}; quilt push -a -+ cd ${VNCDIR}; patch -p1 < patches/tls-auth-pluging.patch; patch -p1 < patches/remove-systemd-socket-activation.patch - cd ${VNCDIR}; ./autogen.sh --without-ssl --without-websockets --without-tightvnc-filetransfer; - cd ${VNCDIR}; $(MAKE) ++ cd ${VNCDIR}; patch -p1 < patches/tls-auth-pluging.patch + cd ${VNCDIR}; cmake -D WITH_GNUTLS=OFF -D WITH_OPENSSL=OFF -D WITH_WEBSOCKETS=OFF -D WITH_SYSTEMD=OFF -D WITH_TIGHTVNC_FILETRANSFER=OFF -D WITH_GCRYPT=OFF -D WITH_LZO=OFF -D BUILD_SHARED_LIBS=OFF .; cmake --build . --vncterm: vncterm.c ${VNCLIB} wchardata.c -- gcc -O2 -g -o $@ vncterm.c wchardata.c -Wall -Wno-deprecated-declarations -D_GNU_SOURCE -I ${VNCDIR} ${VNCLIB} -lnsl -lpthread -lz -ljpeg -lutil -lgnutls -lpng -+vncterm: vncterm.c ${VNCLIB} wchardata.c vncterm.1 font.data +-vncterm: vncterm.c wchardata.c $(VNCLIB) +- $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $^ $(VNC_LIBS) +- +-wchardata.c: +- cp /usr/share/unifont/$@ $@ ++vncterm: vncterm.c ${VNCLIB} vncterm.1 font.data + gcc -O2 -g -o $@ vncterm.c wchardata.c -Wall -Wno-deprecated-declarations -D_GNU_SOURCE -I ${VNCDIR} ${VNCLIB} -lpthread -lz -ljpeg -lutil -lgnutls -lpng - wchardata.c: - cp /usr/share/unifont/$@ $@ + .PHONY: install + install: vncterm vncterm.1 font.data +@@ -57,7 +51,7 @@ dinstall: ${DEB} + + vncterm.1: vncterm.pod + rm -f $@ +- pod2man -n $< -s 1 -r ${DEB_VERSION_UPSTREAM} <$< >$@ ++ pod2man -n $< -s 1 -r ${VNCVER} <$< >$@ + + .PHONY: deb + deb: $(DEB) diff --git a/vncterm/.gitignore b/vncterm/.gitignore new file mode 100644 index 0000000..a928c1c --- /dev/null +++ b/vncterm/.gitignore @@ -0,0 +1,8 @@ +build/ +vncterm +libvncserver-LibVNCServer-0.9.11/ +# wchardata.c is copied from unifont (/usr/share/unifont/wchardata.c) +wchardata.c +*.deb +*.buildinfo +*.changes diff --git a/vncterm/LibVNCServer-0.9.11.tar.gz b/vncterm/LibVNCServer-0.9.11.tar.gz deleted file mode 100644 index c33564a..0000000 Binary files a/vncterm/LibVNCServer-0.9.11.tar.gz and /dev/null differ diff --git a/vncterm/LibVNCServer-0.9.13.tar.gz b/vncterm/LibVNCServer-0.9.13.tar.gz new file mode 100644 index 0000000..e0d6242 Binary files /dev/null and b/vncterm/LibVNCServer-0.9.13.tar.gz differ diff --git a/vncterm/Makefile b/vncterm/Makefile index 6c9df5c..1ee289d 100644 --- a/vncterm/Makefile +++ b/vncterm/Makefile @@ -1,19 +1,20 @@ -PACKAGE=vncterm -# Note: also change version in debian/control and debian/changelog -VERSION=1.5 -PACKAGERELEASE=2 -ARCH:=$(shell dpkg-architecture -qDEB_BUILD_ARCH) -GITVERSION:=$(shell cat .git/refs/heads/master) -CDATE:=$(shell date +%F) +include /usr/share/dpkg/pkg-info.mk +include /usr/share/dpkg/architecture.mk -VNCVER=0.9.11 +PACKAGE=vncterm +GITVERSION:=$(shell cat .git/refs/heads/master) + +VNCVER=0.9.13 VNCREL=LibVNCServer-${VNCVER} VNCDIR=libvncserver-${VNCREL} VNCSRC=${VNCREL}.tar.gz -VNCLIB=${VNCDIR}/libvncserver/.libs/libvncserver.a +VNCLIB=${VNCDIR}/libvncserver.a -DEB=${PACKAGE}_${VERSION}-${PACKAGERELEASE}_${ARCH}.deb -SNAP=${PACKAGE}-${VERSION}-${CDATE}.tar.gz +DEB=${PACKAGE}_${DEB_VERSION_UPSTREAM_REVISION}_${DEB_BUILD_ARCH}.deb + +CPPFLAGS += -O2 -g -Wall -Wno-deprecated-declarations -D_GNU_SOURCE -I $(VNCDIR) + +VNC_LIBS := -lnsl -lpthread -lz -ljpeg -lutil -lgnutls -lpng all: vncterm @@ -31,11 +32,10 @@ ${VNCLIB}: ${VNCSRC} tar xf ${VNCSRC} ln -s ../vncpatches ${VNCDIR}/patches cd ${VNCDIR}; quilt push -a - cd ${VNCDIR}; ./autogen.sh --without-ssl --without-websockets --without-tightvnc-filetransfer; - cd ${VNCDIR}; $(MAKE) + cd ${VNCDIR}; cmake -D WITH_GNUTLS=OFF -D WITH_OPENSSL=OFF -D WITH_WEBSOCKETS=OFF -D WITH_SYSTEMD=OFF -D WITH_TIGHTVNC_FILETRANSFER=OFF -D WITH_GCRYPT=OFF -D WITH_LZO=OFF -D BUILD_SHARED_LIBS=OFF .; cmake --build . -vncterm: vncterm.c ${VNCLIB} wchardata.c - gcc -O2 -g -o $@ vncterm.c wchardata.c -Wall -Wno-deprecated-declarations -D_GNU_SOURCE -I ${VNCDIR} ${VNCLIB} -lnsl -lpthread -lz -ljpeg -lutil -lgnutls -lpng +vncterm: vncterm.c wchardata.c $(VNCLIB) + $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $^ $(VNC_LIBS) wchardata.c: cp /usr/share/unifont/$@ $@ @@ -57,21 +57,20 @@ dinstall: ${DEB} vncterm.1: vncterm.pod rm -f $@ - pod2man -n $< -s 1 -r ${VERSION} <$< >$@ + pod2man -n $< -s 1 -r ${DEB_VERSION_UPSTREAM} <$< >$@ .PHONY: deb deb: $(DEB) ${DEB}: $(MAKE) clean rsync -a . --exclude build build - echo "Architecture: ${ARCH}" >> build/debian/control echo "git clone git://git.proxmox.com/git/vncterm.git\\ngit checkout ${GIVERSION}" > build/debian/SOURCE cd build; dpkg-buildpackage -rfakeroot -b -us -uc - lintian ${DEB} + lintian ${DEB} .PHONY: upload upload: ${DEB} - tar cf - ${DEB} | ssh -X repoman@repo.proxmox.com -- upload --product pmg,pve --dist stretch + tar cf - ${DEB} | ssh -X repoman@repo.proxmox.com -- upload --product pve --dist buster .PHONY: clean clean: @@ -79,13 +78,3 @@ clean: .PHONY: distclean distclean: clean - -.PHONY: dist -${SNAP} dist: distclean - rm -rf ../${SNAP} - cd ..; tar cvzf ${SNAP} --exclude .svn ${PACKAGE} - mv ../${SNAP} ${SNAP} - -.PHONY: uploaddist -uploaddist: ${SNAP} - scp ${SNAP} pve.proxmox.com:/home/ftp/sources/ diff --git a/vncterm/debian/changelog b/vncterm/debian/changelog index a74b15c..75a4009 100644 --- a/vncterm/debian/changelog +++ b/vncterm/debian/changelog @@ -1,3 +1,21 @@ +vncterm (1.6-2) pve pmg; urgency=medium + + * import libvncserver 0.9.13 upstream release + + -- Proxmox Support Team Wed, 15 Jul 2020 07:05:12 +0200 + +vncterm (1.6-1) pve pmg; urgency=medium + + * rebuild for Debian Buster + + -- Proxmox Support Team Wed, 22 May 2019 19:42:26 +0200 + +vncterm (1.5-3) unstable; urgency=medium + + * depend on libjpeg62-turbo instead of libjpeg62 + + -- Proxmox Support Team Wed, 15 Nov 2017 12:46:19 +0100 + vncterm (1.5-2) unstable; urgency=medium * replaced pure plack cursor with a more visible pointer with white edges diff --git a/vncterm/debian/compat b/vncterm/debian/compat index ec63514..f599e28 100644 --- a/vncterm/debian/compat +++ b/vncterm/debian/compat @@ -1 +1 @@ -9 +10 diff --git a/vncterm/debian/control b/vncterm/debian/control index 75627f1..cb6c7b2 100644 --- a/vncterm/debian/control +++ b/vncterm/debian/control @@ -1,19 +1,27 @@ Source: vncterm Maintainer: Proxmox Support Team -Build-Depends: - debhelper (>= 8.0.0), - zlib1g-dev, - libjpeg-dev, - libpng-dev, - libglib2.0-dev, - libgnutls28-dev, - unifont -Standards-Version: 3.9.3 +Build-Depends: cmake, + debhelper (>= 10~), + libglib2.0-dev, + libgnutls28-dev, + libjpeg62-turbo-dev, + libpng-dev, + quilt, + tar, + unifont, + zlib1g-dev, +Standards-Version: 4.1.3 Package: vncterm +Architecture: any Section: x11 Priority: optional -Depends: libc6 (>= 2.7-18), libjpeg62, zlib1g (>= 1:1.2.1), libgnutls-deb0-28 | libgnutls30, libpng16-16, ${shlibs:Depends} +Depends: libc6 (>= 2.7-18), + libgnutls-deb0-28 | libgnutls30, + libjpeg62-turbo, + libpng16-16, + zlib1g (>= 1:1.2.1), + ${shlibs:Depends}, Description: VNC Terminal Emulator With vncterm you can start commands and export its standard input and output to any VNC client (simulating a xterm Terminal). diff --git a/vncterm/vncpatches/remove-systemd-socket-activation.patch b/vncterm/vncpatches/remove-systemd-socket-activation.patch deleted file mode 100644 index f190b94..0000000 --- a/vncterm/vncpatches/remove-systemd-socket-activation.patch +++ /dev/null @@ -1,227 +0,0 @@ -commit 25e3dfeab75b6febdb6c1157e991c3bcbeb3eb86 -Author: Fabian Grünbichler -AuthorDate: Thu Feb 2 11:22:35 2017 +0100 -Commit: Fabian Grünbichler -CommitDate: Thu Feb 2 11:22:35 2017 +0100 - - Revert "Support systemd socket activation" - - unneeded extra build dep - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 9424d8d..4c56635 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -36,7 +36,6 @@ find_package(GnuTLS) - find_package(Threads) - find_package(X11) - find_package(OpenSSL) --find_package(PkgConfig) - find_library(LIBGCRYPT_LIBRARIES gcrypt) - - # Check whether the version of libjpeg we found was libjpeg-turbo and print a -@@ -103,17 +102,6 @@ if(PNG_FOUND) - endif(PNG_FOUND) - option(LIBVNCSERVER_ALLOW24BPP "Allow 24 bpp" ON) - --pkg_check_modules(SYSTEMD "libsystemd") --if(SYSTEMD_FOUND) -- option(LIBVNCSERVER_WITH_SYSTEMD "Build with systemd socket activation support" ON) --endif(SYSTEMD_FOUND) -- --if(LIBVNCSERVER_WITH_SYSTEMD) -- add_definitions(-DLIBVNCSERVER_WITH_SYSTEMD) -- include_directories(${SYSTEMD_INCLUDE_DIRS}) -- set(ADDITIONAL_LIBS ${ADDITIONAL_LIBS} ${SYSTEMD_LIBRARIES}) --endif(LIBVNCSERVER_WITH_SYSTEMD) -- - if(GNUTLS_FOUND) - set(LIBVNCSERVER_WITH_CLIENT_TLS 1) - option(LIBVNCSERVER_WITH_WEBSOCKETS "Build with websockets support (gnutls)" ON) -diff --git a/configure.ac b/configure.ac -index f13edb4..3f4b29a 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -68,9 +68,6 @@ if test ! -z "$with_ffmpeg"; then - fi - AM_CONDITIONAL(HAVE_MP3LAME, test "$HAVE_MP3LAME" = "true") - --PKG_CHECK_MODULES([LIBSYSTEMD], [libsystemd], [with_systemd=1], [with_systemd=0]) --AM_CONDITIONAL([WITH_SYSTEMD], [test $with_systemd -eq 1]) -- - # Seem to need this dummy here to induce the 'checking for egrep... grep -E', etc. - # before it seemed to be inside the with_jpeg conditional. - AC_CHECK_HEADER(thenonexistentheader.h, HAVE_THENONEXISTENTHEADER_H="true") -diff --git a/libvncserver/Makefile.am b/libvncserver/Makefile.am -index e25784b..2f23e31 100644 ---- a/libvncserver/Makefile.am -+++ b/libvncserver/Makefile.am -@@ -59,12 +59,6 @@ LIB_SRCS = main.c rfbserver.c rfbregion.c auth.c sockets.c $(WEBSOCKETSSRCS) \ - libvncserver_la_SOURCES=$(LIB_SRCS) - libvncserver_la_LIBADD=$(WEBSOCKETSSSLLIBS) - --if WITH_SYSTEMD --AM_CPPFLAGS += -DLIBVNCSERVER_WITH_SYSTEMD --libvncserver_la_CFLAGS = $(LIBSYSTEMD_CFLAGS) --libvncserver_la_LIBADD += $(LIBSYSTEMD_LIBS) --endif -- - lib_LTLIBRARIES=libvncserver.la - libvncserver_la_LDFLAGS = -version-info 1:0:0 - -diff --git a/libvncserver/sockets.c b/libvncserver/sockets.c -index bbc3d90..6467b1c 100644 ---- a/libvncserver/sockets.c -+++ b/libvncserver/sockets.c -@@ -77,10 +77,6 @@ - #include "rfbssl.h" - #endif - --#ifdef LIBVNCSERVER_WITH_SYSTEMD --#include --#endif -- - #if defined(__linux__) && defined(NEED_TIMEVAL) - struct timeval - { -@@ -126,54 +122,6 @@ int deny_severity=LOG_WARNING; - int rfbMaxClientWait = 20000; /* time (ms) after which we decide client has - gone away - needed to stop us hanging */ - --static rfbBool --rfbNewConnectionFromSock(rfbScreenInfoPtr rfbScreen, int sock) --{ -- const int one = 1; --#ifdef LIBVNCSERVER_IPv6 -- struct sockaddr_storage addr; --#else -- struct sockaddr_in addr; --#endif -- socklen_t addrlen = sizeof(addr); -- -- getpeername(sock, (struct sockaddr *)&addr, &addrlen); -- -- if(!rfbSetNonBlocking(sock)) { -- rfbLogPerror("rfbCheckFds: setnonblock"); -- closesocket(sock); -- return FALSE; -- } -- -- if (setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, -- (char *)&one, sizeof(one)) < 0) { -- rfbLogPerror("rfbCheckFds: setsockopt failed: can't set TCP_NODELAY flag, non TCP socket?"); -- } -- --#ifdef USE_LIBWRAP -- if(!hosts_ctl("vnc",STRING_UNKNOWN,inet_ntoa(addr.sin_addr), -- STRING_UNKNOWN)) { -- rfbLog("Rejected connection from client %s\n", -- inet_ntoa(addr.sin_addr)); -- closesocket(sock); -- return FALSE; -- } --#endif -- --#ifdef LIBVNCSERVER_IPv6 -- char host[1024]; -- if(getnameinfo((struct sockaddr*)&addr, addrlen, host, sizeof(host), NULL, 0, NI_NUMERICHOST) != 0) { -- rfbLogPerror("rfbProcessNewConnection: error in getnameinfo"); -- } -- rfbLog("Got connection from client %s\n", host); --#else -- rfbLog("Got connection from client %s\n", inet_ntoa(addr.sin_addr)); --#endif -- -- rfbNewClient(rfbScreen,sock); -- return TRUE; --} -- - /* - * rfbInitSockets sets up the TCP and UDP sockets to listen for RFB - * connections. It does nothing if called again. -@@ -190,20 +138,6 @@ rfbInitSockets(rfbScreenInfoPtr rfbScreen) - - rfbScreen->socketState = RFB_SOCKET_READY; - --#ifdef LIBVNCSERVER_WITH_SYSTEMD -- if (sd_listen_fds(0) == 1) -- { -- int sock = SD_LISTEN_FDS_START + 0; -- if (sd_is_socket(sock, AF_UNSPEC, 0, 0)) -- rfbNewConnectionFromSock(rfbScreen, sock); -- else if (sd_is_socket(sock, AF_UNSPEC, 0, 1)) -- rfbProcessNewConnection(rfbScreen); -- return; -- } -- else -- rfbLog("Unable to establish connection with systemd socket\n"); --#endif -- - if (rfbScreen->inetdSock != -1) { - const int one = 1; - -@@ -479,7 +413,14 @@ rfbCheckFds(rfbScreenInfoPtr rfbScreen,long usec) - rfbBool - rfbProcessNewConnection(rfbScreenInfoPtr rfbScreen) - { -+ const int one = 1; - int sock = -1; -+#ifdef LIBVNCSERVER_IPv6 -+ struct sockaddr_storage addr; -+#else -+ struct sockaddr_in addr; -+#endif -+ socklen_t addrlen = sizeof(addr); - fd_set listen_fds; - int chosen_listen_sock = -1; - -@@ -500,12 +441,47 @@ rfbProcessNewConnection(rfbScreenInfoPtr rfbScreen) - if (rfbScreen->listen6Sock >= 0 && FD_ISSET(rfbScreen->listen6Sock, &listen_fds)) - chosen_listen_sock = rfbScreen->listen6Sock; - -- if ((sock = accept(chosen_listen_sock, NULL, NULL)) < 0) { -+ if ((sock = accept(chosen_listen_sock, -+ (struct sockaddr *)&addr, &addrlen)) < 0) { - rfbLogPerror("rfbCheckFds: accept"); - return FALSE; - } - -- return rfbNewConnectionFromSock(rfbScreen, sock); -+ if(!rfbSetNonBlocking(sock)) { -+ closesocket(sock); -+ return FALSE; -+ } -+ -+ if (setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, -+ (char *)&one, sizeof(one)) < 0) { -+ rfbLogPerror("rfbCheckFds: setsockopt failed: can't set TCP_NODELAY flag, non TCP socket?"); -+ } -+ -+#ifdef USE_LIBWRAP -+ if(!hosts_ctl("vnc",STRING_UNKNOWN,inet_ntoa(addr.sin_addr), -+ STRING_UNKNOWN)) { -+ rfbLog("Rejected connection from client %s\n", -+ inet_ntoa(addr.sin_addr)); -+ closesocket(sock); -+ return FALSE; -+ } -+#endif -+ -+#ifdef LIBVNCSERVER_IPv6 -+ { -+ char host[1024]; -+ if(getnameinfo((struct sockaddr*)&addr, addrlen, host, sizeof(host), NULL, 0, NI_NUMERICHOST) != 0) { -+ rfbLogPerror("rfbProcessNewConnection: error in getnameinfo"); -+ } -+ rfbLog("Got connection from client %s\n", host); -+ } -+#else -+ rfbLog("Got connection from client %s\n", inet_ntoa(addr.sin_addr)); -+#endif -+ -+ rfbNewClient(rfbScreen,sock); -+ -+ return TRUE; - } - - diff --git a/vncterm/vncpatches/series b/vncterm/vncpatches/series index defbfe8..2fb1c30 100644 --- a/vncterm/vncpatches/series +++ b/vncterm/vncpatches/series @@ -1,2 +1 @@ -remove-systemd-socket-activation.patch tls-auth-pluging.patch diff --git a/vncterm/vncpatches/tls-auth-pluging.patch b/vncterm/vncpatches/tls-auth-pluging.patch index 17a8c47..837612f 100644 --- a/vncterm/vncpatches/tls-auth-pluging.patch +++ b/vncterm/vncpatches/tls-auth-pluging.patch @@ -1,23 +1,22 @@ -Index: vnc/libvncserver/auth.c +Index: libvncserver-LibVNCServer-0.9.13/libvncserver/auth.c =================================================================== -@@ -300,8 +300,9 @@ - int32_t securityType = rfbSecTypeInvalid; +--- libvncserver-LibVNCServer-0.9.13.orig/libvncserver/auth.c ++++ libvncserver-LibVNCServer-0.9.13/libvncserver/auth.c +@@ -301,7 +301,8 @@ rfbAuthNewClient(rfbClientPtr cl) if (!cl->screen->authPasswdData || cl->reverseConnection) { -- /* chk if this condition is valid or not. */ + /* chk if this condition is valid or not. */ - securityType = rfbSecTypeNone; -+ /* chk if this condition is valid or not. */ + /* we disable anonymous auth */ + // securityType = rfbSecTypeNone; } else if (cl->screen->authPasswdData) { securityType = rfbSecTypeVncAuth; } -Index: vnc/newterm/Makefile.am -Index: vnc/libvncserver/sockets.c +Index: libvncserver-LibVNCServer-0.9.13/libvncserver/sockets.c =================================================================== ---- vnc.orig/libvncserver/sockets.c 2011-01-20 16:42:41.000000000 +0100 -+++ vnc/libvncserver/sockets.c 2011-01-21 10:20:03.000000000 +0100 -@@ -613,7 +613,11 @@ rfbReadExactTimeout(rfbClientPtr cl, char* buf, int len, int timeout) +--- libvncserver-LibVNCServer-0.9.13.orig/libvncserver/sockets.c ++++ libvncserver-LibVNCServer-0.9.13/libvncserver/sockets.c +@@ -638,7 +638,11 @@ rfbReadExactTimeout(rfbClientPtr cl, cha n = read(sock, buf, len); } #else @@ -30,7 +29,7 @@ Index: vnc/libvncserver/sockets.c #endif if (n > 0) { -@@ -801,7 +805,11 @@ rfbWriteExact(rfbClientPtr cl, +@@ -826,7 +830,11 @@ rfbWriteExact(rfbClientPtr cl, n = rfbssl_write(cl, buf, len); else #endif @@ -42,21 +41,21 @@ Index: vnc/libvncserver/sockets.c if (n > 0) { -Index: vnc/rfb/rfb.h +Index: libvncserver-LibVNCServer-0.9.13/rfb/rfb.h =================================================================== ---- vnc.orig/rfb/rfb.h 2011-01-20 16:36:06.000000000 +0100 -+++ vnc/rfb/rfb.h 2011-01-21 06:44:22.000000000 +0100 -@@ -397,6 +397,9 @@ - struct _rfbStatList *Next; - } rfbStatList; +--- libvncserver-LibVNCServer-0.9.13.orig/rfb/rfb.h ++++ libvncserver-LibVNCServer-0.9.13/rfb/rfb.h +@@ -411,6 +411,9 @@ typedef struct _rfbStatList { + typedef struct _rfbSslCtx rfbSslCtx; + typedef struct _wsCtx wsCtx; +typedef ssize_t (*sock_read_fn_t)(struct _rfbClientRec *cl, void *buf, size_t count); +typedef ssize_t (*sock_write_fn_t)(struct _rfbClientRec *cl, const void *buf, size_t count); + typedef struct _rfbClientRec { - - /* back pointer to the screen */ -@@ -417,6 +420,10 @@ + + /** back pointer to the screen */ +@@ -431,6 +434,10 @@ typedef struct _rfbClientRec { void* clientData; ClientGoneHookPtr clientGoneHook; @@ -64,6 +63,6 @@ Index: vnc/rfb/rfb.h + sock_read_fn_t sock_read_fn; + sock_read_fn_t sock_write_fn; + - SOCKET sock; + rfbSocket sock; char *host;