include /usr/share/dpkg/architecture.mk
PACKAGE=vncterm
-GITVERSION:=$(shell cat .git/refs/heads/master)
+BUILDDIR ?= $(PACKAGE)-$(DEB_VERSION_UPSTREAM)
-VNCVER=0.9.11
-VNCREL=LibVNCServer-${VNCVER}
-VNCDIR=libvncserver-${VNCREL}
-VNCSRC=${VNCREL}.tar.gz
-VNCLIB=${VNCDIR}/libvncserver/.libs/libvncserver.a
+VNCVER=0.9.14
+VNCREL=LibVNCServer-$(VNCVER)
+VNCDIR=libvncserver-$(VNCREL)
+VNCSRC=$(VNCREL).tar.gz
+VNCLIB=$(VNCDIR)/libvncserver.a
-DEB=${PACKAGE}_${DEB_VERSION_UPSTREAM_REVISION}_${DEB_BUILD_ARCH}.deb
+DSC = $(PACKAGE)_$(DEB_VERSION).dsc
+
+DEB=$(PACKAGE)_$(DEB_VERSION)_$(DEB_HOST_ARCH).deb
+DBG_DEB=$(PACKAGE)-dbgsym_$(DEB_VERSION)_$(DEB_HOST_ARCH).deb
CPPFLAGS += -O2 -g -Wall -Wno-deprecated-declarations -D_GNU_SOURCE -I $(VNCDIR)
gcc -g -O2 -o $@ genfont2.c -Wall -Wextra -D_GNU_SOURCE -lz
.PHONY: vnc
-vnc: ${VNCLIB}
-${VNCLIB}: ${VNCSRC}
- rm -rf ${VNCDIR}
- 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)
+vnc: $(VNCLIB)
+$(VNCLIB): $(VNCSRC)
+ rm -rf $(VNCDIR)
+ tar xf $(VNCSRC)
+ ln -s ../vncpatches $(VNCDIR)/patches
+ cd $(VNCDIR); quilt push -a
+ 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 wchardata.c $(VNCLIB)
$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $^ $(VNC_LIBS)
.PHONY: install
install: vncterm vncterm.1 font.data
- mkdir -p ${DESTDIR}/usr/share/doc/${PACKAGE}
- install -m 0644 copyright ${DESTDIR}/usr/share/doc/${PACKAGE}
- mkdir -p ${DESTDIR}/usr/share/${PACKAGE}
- install -m 0644 font.data ${DESTDIR}/usr/share/${PACKAGE}
- mkdir -p ${DESTDIR}/usr/share/man/man1
- install -m 0644 vncterm.1 ${DESTDIR}/usr/share/man/man1
- mkdir -p ${DESTDIR}/usr/bin
- install -s -m 0755 vncterm ${DESTDIR}/usr/bin
+ mkdir -p $(DESTDIR)/usr/share/$(PACKAGE)
+ install -m 0644 font.data $(DESTDIR)/usr/share/$(PACKAGE)
+ mkdir -p $(DESTDIR)/usr/share/man/man1
+ install -m 0644 vncterm.1 $(DESTDIR)/usr/share/man/man1
+ mkdir -p $(DESTDIR)/usr/bin
+ install -m 0755 vncterm $(DESTDIR)/usr/bin
.PHONY: dinstall
-dinstall: ${DEB}
- dpkg -i ${DEB}
+dinstall: $(DEB)
+ dpkg -i $(DEB)
vncterm.1: vncterm.pod
rm -f $@
- pod2man -n $< -s 1 -r ${DEB_VERSION_UPSTREAM} <$< >$@
+ pod2man -n $< -s 1 -r $(DEB_VERSION_UPSTREAM) <$< >$@
+
+$(BUILDDIR):
+ rm -rf $@ $@.tmp
+ rsync -a . $@.tmp
+ echo "git clone git://git.proxmox.com/git/vncterm.git\\ngit checkout $$(git rev-parse HEAD)" > $@.tmp/debian/SOURCE
+ mv $@.tmp $@
.PHONY: deb
deb: $(DEB)
-${DEB}:
- $(MAKE) clean
- rsync -a . --exclude build build
- 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}
+$(DEB): $(BUILDDIR)
+ cd $(BUILDDIR); dpkg-buildpackage -rfakeroot -b -us -uc
+ lintian $(DEB)
+
+.PHONY: dsc
+dsc: $(DSC)
+ rm -rf $(BUILDDIR) $(DSC)
+ $(MAKE) $(DSC)
+ lintian $(DSC)
+
+$(DSC): $(BUILDDIR)
+ cd $(BUILDDIR); dpkg-buildpackage -S -us -uc
+
+sbuild: $(DSC)
+ sbuild $<
.PHONY: upload
-upload: ${DEB}
- tar cf - ${DEB} | ssh -X repoman@repo.proxmox.com -- upload --product pmg,pve --dist stretch
+upload: UPLOAD_DIST ?= $(DEB_DISTRIBUTION)
+upload: $(DEB)
+ tar cf - $(DEB) $(DBG_DEB) | ssh -X repoman@repo.proxmox.com -- upload --product pve --dist $(UPLOAD_DIST)
.PHONY: clean
clean:
- rm -rf vncterm vncterm.1 vncterm_*.deb genfont genfont2 *~ ${VNCDIR} vncterm-*.tar.gz glyph.h.tmp build *.changes wchardata.c font.data.tmp font.data *.buildinfo
+ rm -f *.dsc *.deb $(PACKAGE)*.tar* *.changes *.build *.buildinfo
+ rm -f vncterm vncterm.1 genfont genfont2 *~ *.tmp wchardata.c font.data
+ rm -rf $(VNCDIR) $(PACKAGE)-[0-9]*/
.PHONY: distclean
distclean: clean
+++ /dev/null
-Copyright (C) 2007 Proxmox Server Solutions GmbH
-
-Copyright: vncterm is under GNU GPL, the GNU General Public License.
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along
-with this program; if not, write to the Free Software Foundation, Inc.,
-51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-The complete text of the GNU General
-Public License can be found in `/usr/share/common-licenses/GPL'.
+vncterm (1.8.0) bookworm; urgency=medium
+
+ * re-build for Debian 12 Bookworm based releases
+
+ * update libvncserver to 0.9.14
+
+ -- Proxmox Support Team <support@proxmox.com> Mon, 29 May 2023 17:10:38 +0200
+
+vncterm (1.7-1) bullseye; urgency=medium
+
+ * rebuild for Debian 11 Bullseye based releases
+
+ -- Proxmox Support Team <support@proxmox.com> Sun, 16 May 2021 19:06:09 +0200
+
+vncterm (1.6-2) pve pmg; urgency=medium
+
+ * import libvncserver 0.9.13 upstream release
+
+ -- Proxmox Support Team <support@proxmox.com> Wed, 15 Jul 2020 07:05:12 +0200
+
vncterm (1.6-1) pve pmg; urgency=medium
* rebuild for Debian Buster
Source: vncterm
+Section: admin
+Priority: optional
Maintainer: Proxmox Support Team <support@proxmox.com>
-Build-Depends: debhelper (>= 10~),
+Build-Depends: cmake,
+ debhelper-compat (= 12),
libglib2.0-dev,
libgnutls28-dev,
libjpeg62-turbo-dev,
libpng-dev,
quilt,
- tar,
unifont,
zlib1g-dev,
-Standards-Version: 4.1.3
+Standards-Version: 4.6.1
Package: vncterm
Architecture: any
Section: x11
Priority: optional
-Depends: libc6 (>= 2.7-18),
- libgnutls-deb0-28 | libgnutls30,
+Depends: libgnutls-deb0-28 | libgnutls30,
libjpeg62-turbo,
libpng16-16,
zlib1g (>= 1:1.2.1),
+ ${misc:Depends},
${shlibs:Depends},
Description: VNC Terminal Emulator
With vncterm you can start commands and export its standard input and
--- /dev/null
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Source: git://git.proxmox.com/git/vncterm.git
+
+Files:
+ *
+Copyright: 2007 - 2023, Proxmox Support Team <support@proxmox.com>
+License: AGPL-3.0-or-later
+ This program is free software: you can redistribute it and/or modify it under
+ the terms of the GNU Affero General Public License as published by the Free
+ Software Foundation, either version 3 of the License, or (at your option) any
+ later version.
+ .
+ This program is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
+ details.
+ .
+ You should have received a copy of the GNU Affero General Public License along
+ with this program. If not, see <https://www.gnu.org/licenses/>.
+Comment:
+ The authors take the provided option to use the LibVNC as GPL 2 *or later*,
+ and use it as GPL 3, allowing combination with our AGPLv3 code.
+
+Files:
+ LibVNCServer-*.tar*
+Copyright: 2001-2003, Johannes E. Schindelin
+ 2001 - 2022, The LibVNC Authors
+License: GPL-2+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+ .
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License
+ along with this package; if not, see <https://www.gnu.org/licenses/>.
+Comment:
+ On Debian systems, the full text of the GNU General Public License
+ version 2 can be found in the file '/usr/share/common-licenses/GPL-2'.
--- /dev/null
+3.0 (native)
+++ /dev/null
-commit 25e3dfeab75b6febdb6c1157e991c3bcbeb3eb86
-Author: Fabian Grünbichler <f.gruenbichler@proxmox.com>
-AuthorDate: Thu Feb 2 11:22:35 2017 +0100
-Commit: Fabian Grünbichler <f.gruenbichler@proxmox.com>
-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 <systemd/sd-daemon.h>
--#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;
- }
-
-
-remove-systemd-socket-activation.patch
tls-auth-pluging.patch
-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
#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
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;
+ sock_read_fn_t sock_read_fn;
+ sock_read_fn_t sock_write_fn;
+
- SOCKET sock;
+ rfbSocket sock;
char *host;