You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

7761 lines
290 KiB

2012-05-04 Christian Beier <>
* Enable building DLLs with MinGW32.
2012-05-04 Christian Beier <>
* NEWS: Update NEWS for 0.9.9.
2012-05-03 Christian Beier <>
* libvncclient/rfbproto.c: LibVNCClient: #undef these types in case
it's WIN32. The various other headers include windows.h and the winsock headers
which give an error when SOCKET and socklen_t are already defined.
2012-05-03 Christian Beier <>
* rfb/rfb.h: LibVNCServer: Include ws2tcpip.h if it's available. Needed for the IPv6 stuff.
2012-04-30 Christian Beier <>
* libvncserver/ LibVNCServer: Prefer GnuTLS over OpenSSL
to be in sync with LibVNCClient.
2012-04-30 Christian Beier <>
* libvncserver/rfbserver.c: Some more libjpeg, libpng and zlib
related build fixes.
2012-04-30 Christian Beier <>
* Make PKG_CHECK_MODULES fail non-fatal. These check for optional modules.
2012-04-30 Christian Beier <>
* libvncserver/rfbserver.c, rfb/rfb.h: Only try to build TightPNG
stuff when libjpeg is available. TightPNG replaces the ZLIB stuff int Tight encoding with PNG. It
still uses JPEG rects as well. Theoretically, we could build
TightPNG with only libpng and libjpeg - without zlib - but libpng
depends on zlib, so this is kinda moot.
2012-04-27 Christian Beier <>
* test/ Only build libjpeg test programs if libjpeg is
actually available.
2012-04-26 Christian Beier <>
* CMakeLists.txt: Fix CMake build of LibVNCClient.
2012-04-26 Christian Beier <>
* libvncserver/rfbserver.c: Properly check return value. This also fixes a compiler warning.
2012-04-26 Christian Beier <>
* Fix build when no libjpeg is available.
2012-04-26 Christian Beier <>
* examples/android/, libvncserver/ Include
some more missing files for make dist.
2012-04-25 Christian Beier <>
* libvncserver/ Include missing files for make dist.
2012-04-25 Christian Beier <>
* libvncclient/ Fix libvncclient make dist.
2012-04-25 Christian Beier <>
* Better check for Linux build.
2012-04-25 Christian Beier <>
* vncterm/ Binaries that are to be installed should be
all lowercase.
2012-04-25 Christian Beier <>
* CMakeLists.txt, Bump version to 0.9.9.
2012-04-25 Christian Beier <>
* common/turbojpeg.c, libvncserver/rfbserver.c,
libvncserver/websockets.c, test/tjbench.c: Fix some compiler
warnings thrown with newer gcc.
2012-04-25 Christian Beier <>
* test/ Fix turbojpeg tests compilation.
2012-04-25 DRC <>
* common/turbojpeg.c: Fix compilation with some libjpeg
2012-04-22 Monkey <>
* libvncclient/rfbproto.c: Added support for UltraVNC Single Click
as originally proposed by Noobius (Boobius) on 6/1/11. Original thread:
2012-04-15 Christian Beier <>
* AUTHORS: Add Philip to AUTHORS.
2012-04-15 Christian Beier <>
* libvncclient/tls_none.c: LibVNCClient: Fix build with no SSL/TLS
library available.
2012-04-15 Christian Beier <>
* libvncclient/tls_openssl.c: LibVNCClient: properly free the
openssl session stuff on shutdown.
2012-04-15 Christian Beier <>
* libvncclient/rfbproto.c, libvncclient/sockets.c,
libvncclient/tls_gnutls.c, libvncclient/vncviewer.c,
rfb/rfbclient.h: LibVNCClient: Remove all those WITH_CLIENT_TLS
#ifdefs and move GnuTLS specific functionality into tls_gnutls.c.
2012-04-14 Christian Beier <>
* Unify GnuTLS vs OpenSSL build systems stuff between
libvncclient and libvncserver.
2012-04-14 Christian Beier <>
* libvncclient/, libvncclient/tls.c,
libvncclient/tls_gnutls.c, libvncclient/tls_none.c,
libvncclient/tls_openssl.c: Add the OpenSSL libvncclient TLS version
to the build system.
2012-04-12 Christian Beier <>
* webclients/novnc/LICENSE.txt, webclients/novnc/,
webclients/novnc/include/rfb.js, webclients/novnc/include/ui.js,
webclients/novnc/include/util.js, webclients/novnc/include/vnc.js,
webclients/novnc/include/webutil.js, webclients/novnc/vnc.html,
webclients/novnc/vnc_auto.html: Update our copy of noVNC. Bugfixes and support for tight encoding with zlib.
2012-04-12 Christian Beier <>
* libvncserver/tight.c: Make TurboVNC compress level 3 actually
2012-04-09 DRC <>
* common/turbojpeg.c: Fix memory leak in TurboVNC Note that the memory leak was only occurring with the colorspace
emulation code, which is only active when using regular libjpeg (not
libjpeg-turbo.) Diagnosed by Christian Beier, using valgrind. Signed-off-by: Johannes Schindelin <>
2012-04-02 Christian Beier <>
* libvncclient/listen.c, libvncclient/sockets.c,
libvncserver/httpd.c, libvncserver/sockets.c: IPv6 support for
LibVNCServer, part four: add copyright notices to files with
non-trivial changes.
2012-03-29 Johannes Schindelin <>
* client_examples/SDLvncviewer.c: SDLvncviewer: map Apple/Windows
keys correctly Signed-off-by: Johannes Schindelin <>
2012-03-29 Johannes Schindelin <>
* .gitignore: gitignore the compiled gtkvncclient Signed-off-by: Johannes Schindelin <>
2012-03-29 Johannes Schindelin <>
* client_examples/SDLvncviewer.c: SDLvncviewer: fix the SDL_KEYUP
issue Keys got stuck because unicode is 0 upon SDL_KEYUP events, even if
the same key event sets unicode correctly in SDL_KEYDOWN events. Work around that for the common case (ASCII) using the fact that
both SDL and X11 keysyms were created with ASCII compatibility in
mind. So as long as we type ASCII symbols, we can map things
trivially. Signed-off-by: Johannes Schindelin <>
2012-03-23 DRC <>
* CMakeLists.txt: Extend support for the new TurboVNC encoder to the
CMake build system
2012-03-25 DRC <>
* common/turbojpeg.c, common/turbojpeg.h,,
libvncserver/, libvncserver/rfbserver.c,
libvncserver/tight.c, libvncserver/turbo.c, rfb/rfb.h,
rfb/rfbproto.h, test/, test/bmp.c, test/bmp.h,
test/tjbench.c, test/tjunittest.c, test/tjutil.c, test/tjutil.h:
Replace TightVNC encoder with TurboVNC encoder. This patch is the
result of further research and discussion that revealed the
following: -- TightPng encoding and the rfbTightNoZlib extension need not
conflict. Since TightPng is a separate encoding type, not supported
by TurboVNC-compatible viewers, then the rfbTightNoZlib extension
can be used solely whenever the encoding type is Tight and disabled
with the encoding type is TightPng. -- In the TightVNC encoder, compression levels above 5 are basically
useless. On the set of 20 low-level datasets that were used to
design the TurboVNC encoder (these include the eight 2D application
captures that were also used when designing the TightVNC encoder, as
well as 12 3D application captures provided by the VirtualGL
Project-- see,
moving from Compression Level (CL) 5 to CL 9 in the TightVNC
encoder did not increase the compression ratio of any datasets more
than 10%, and the compression ratio only increased by more than 5%
on four of them. The compression ratio actually decreased a few
percent on five of them. In exchange for this paltry increase in
compression ratio, the CPU usage, on average, went up by a factor of
5. Thus, for all intents and purposes, TightVNC CL 5 provides the
"best useful compression" for that encoder. -- TurboVNC's best compression level (CL 2) compresses 3D and video
workloads significantly more "tightly" than TightVNC CL 5 (~70%
better, in the aggregate) but does not quite achieve the same level
of compression with 2D workloads (~20% worse, in the aggregate.)
This decrease in compression ratio may or may not be noticeable,
since many of the datasets it affects are not performance-critical
(such as the console output of a compilation, etc.) However, for
peace of mind, it was still desirable to have a mode that compressed
with equal "tightness" to TightVNC CL 5, since we proposed to
replace that encoder entirely. -- A new mode was discovered in the TurboVNC encoder that produces,
in the aggregate, similar compression ratios on 2D datasets as
TightVNC CL 5. That new mode involves using Zlib level 7 (the same
level used by TightVNC CL 5) but setting the "palette threshold" to
256, so that indexed color encoding is used whenever possible. This
mode reduces bandwidth only marginally (typically 10-20%) relative
to TurboVNC CL 2 on low-color workloads, in exchange for nearly
doubling CPU usage, and it does not benefit high-color workloads at
all (since those are usually encoded with JPEG.) However, it
provides a means of reproducing the same "tightness" as the TightVNC encoder on 2D workloads without sacrificing any compression for
3D/video workloads, and without using any more CPU time than
necessary. -- The TurboVNC encoder still performs as well or better than the
TightVNC encoder when plain libjpeg is used instead of
libjpeg-turbo. Specific notes follow: common/turbojpeg.c common/turbojpeg.h: Added code to emulate the
libjpeg-turbo colorspace extensions, so that the TurboJPEG wrapper
can be used with plain libjpeg as well. This required updating the
TurboJPEG wrapper to the latest code from libjpeg-turbo 1.2.0,
mainly because the TurboJPEG 1.2 API handles pixel formats in a much
cleaner way, which made the conversion code easier to write. It
also eases the maintenance to have the wrapper synced as much as
possible with the upstream code base (so I can merge any relevant
bug fixes that are discovered upstream.) The libvncserver version of
the TurboJPEG wrapper is a "lite" version, containing only the JPEG
compression/decompression code and not the lossless transform, YUV
encoding/decoding, and dynamic buffer allocation features from
TurboJPEG 1.2. Removed the --with-turbovnc option. configure still
checks for the presence of libjpeg-turbo, but only for the purposes
of printing a performance warning if it isn't available. rfb/rfb.h: Fix a bug introduced with the initial TurboVNC encoder
patch. We cannot use tightQualityLevel for the TurboVNC 1-100
quality level, because tightQualityLevel is also used by ZRLE.
Thus, a new parameter (turboQualityLevel) was created. rfb/rfbproto.h: Remove TurboVNC-specific #ifdefs and language libvncserver/rfbserver.c: Remove TurboVNC-specific #ifdefs. Fix
afore-mentioned tightQualityLevel bug. libvncserver/tight.c: Replaced the TightVNC encoder with the
TurboVNC encoder. Relative to the initial TurboVNC encoder patch,
this patch also: -- Adds TightPng support to the TurboVNC encoder --
Adds the afore-mentioned low-bandwidth mode, which is mapped
externally to Compression Level 9 test/*: Included TJUnitTest (a regression test for the TurboJPEG
wrapper) as well as TJBench (a benchmark for same.) These are
useful for ensuring that the wrapper still functions correctly and
performantly if it needs to be modified for whatever reason. Both
of these programs are derived from libjpeg-turbo 1.2.0. As with the
TurboJPEG wrapper, they do not contain the more advanced features of
TurboJPEG 1.2, such as YUV encoding/decoding and lossless
2012-03-15 Christian Beier <>
2012-03-15 Christian Beier <>
* rfb/rfb.h: Move tightsubsamplevel member to the end of rfbClient
struct. Try to not break ABI between releases. Even if the code gets ugly...
2012-03-10 DRC <>
* x11vnc/ Fix the build of x11vnc when an out-of-tree
build directory is used
2012-03-10 DRC <>
* libvncserver/rfbserver.c: Fix an issue that affects the existing
Tight encoder as well as the newly-implemented Turbo encoder. The issue is that, when using the current libvncserver source, it is
impossible to disable Tight JPEG encoding. The way Tight/Turbo
viewers disable JPEG encoding is by simply not sending the Tight
quality value, causing the server to use the default value of -1.
Thus, cl->tightQualityLevel has to be set to -1 prior to processing
the encodings message for this mechanism to work. Similarly, it is
not guaranteed that the compress level will be set in the encodings
message, so it is set to a default value prior to processing the
2012-03-10 DRC <>
* common/turbojpeg.c, common/turbojpeg.h,,
libvncserver/, libvncserver/rfbserver.c,
libvncserver/turbo.c, rfb/rfb.h, rfb/rfbproto.h: Add TurboVNC
encoding support. TurboVNC is a variant of TightVNC that uses the same client/server
protocol (RFB version 3.8t), and thus it is fully cross-compatible
with TightVNC and TigerVNC (with one exception, which is noted
below.) Both the TightVNC and TurboVNC encoders analyze each
rectangle, pick out regions of solid color to send separately, and
send the remaining subrectangles using mono, indexed color, JPEG, or
raw encoding, depending on the number of colors in the subrectangle.
However, TurboVNC uses a fundamentally different selection algorithm
to determine the appropriate subencoding to use for each
subrectangle. Thus, while it sends a protocol stream that can be
decoded by any TightVNC-compatible viewer, the mix of subencoding
types in this protocol stream will be different from those generated
by a TightVNC server. The research that led to TurboVNC is described in the following
report: In
summary: 20 RFB captures, representing "common" 2D and 3D
application workloads (the 3D workloads were run using VirtualGL),
were studied using the TightVNC encoder in isolation. Some of the
analysis features in the TightVNC encoder, such as smoothness
detection, were found to generate a lot of CPU usage with little or
no benefit in compression, so those features were disabled. JPEG
encoding was accelerated using libjpeg-turbo (which achieves a 2-4x
speedup over plain libjpeg on modern x86 or ARM processors.)
Finally, the "palette threshold" (minimum number of colors that the
subrectangle must have before it is compressed using JPEG or raw)
was adjusted to account for the fact that JPEG encoding is now quite
a bit faster (meaning that we can now use it more without a CPU
penalty.) TurboVNC has additional optimizations, such as the
ability to count colors and encode JPEG images directly from the
framebuffer without first translating the pixels into RGB. The
TurboVNC encoder compares quite favorably in terms of compression
ratio with TightVNC and generally encodes a great deal faster (often
an order of magnitude or more.) The version of the TurboVNC encoder included in this patch is
roughly equivalent to the one found in version 0.6 of the Unix
TurboVNC Server, with a few minor patches integrated from TurboVNC
1.1. TurboVNC 1.0 added multi-threading capabilities, which can be
added in later if desired (at the expense of making libvncserver
depend on libpthread.) Because TurboVNC uses a fundamentally different mix of subencodings
than TightVNC, because it uses the identical protocol (and thus a
viewer really has no idea whether it's talking to a TightVNC or
TurboVNC server), and because it doesn't support rfbTightPng (and in
fact conflicts with it-- see below), the TurboVNC and TightVNC
encoders cannot be enabled simultaneously. Compatibility: In *most* cases, a TurboVNC-enabled viewer is fully compatible with
a TightVNC server, and vice versa. TurboVNC supports
pseudo-encodings for specifying a fine-grained (1-100) quality scale
and specifying chrominance subsampling. If a TurboVNC viewer sends
those to a TightVNC server, then the TightVNC server ignores them,
so the TurboVNC viewer also sends the quality on a 0-9 scale that
the TightVNC server can understand. Similarly, the TurboVNC server
checks first for fine-grained quality and subsampling
pseudo-encodings from the viewer, and failing to receive those, it
then checks for the TightVNC 0-9 quality pseudo-encoding. There is one case in which the two systems are not compatible, and
that is when a TightVNC or TigerVNC viewer requests compression
level 0 without JPEG from a TurboVNC server. For performance
reasons, this causes the TurboVNC server to send images directly to
the viewer, bypassing Zlib. When the TurboVNC server does this, it
also sets bits 7-4 in the compression control byte to rfbTightNoZlib
(0x0A), which is unfortunately the same value as rfbTightPng. Older
TightVNC viewers that don't handle PNG will assume that the stream
is uncompressed but still encapsulated in a Zlib structure, whereas
newer PNG-supporting TightVNC viewers will assume that the stream is
PNG. In either case, the viewer will probably crash. Since most
VNC viewers don't expose compression level 0 in the GUI, this is a
relatively rare situation. Description of changes: -- Added support for libjpeg-turbo. If passed an
argument of --with-turbovnc, configure will now run (or, if cross-compiling, just link) a test program that determines
whether the libjpeg library being used is libjpeg-turbo.
libjpeg-turbo must be used when building the TurboVNC encoder,
because the TurboVNC encoder relies on the libjpeg-turbo
colorspace extensions in order to compress images directly out of
the framebuffer (which may be, for instance, BGRA rather than RGB.)
libjpeg-turbo can optionally be used with the TightVNC encoder as
well, but the speedup will only be marginal (the report linked above
explains why in more detail, but basically it's because of Amdahl's
Law. The TightVNC encoder was designed with the assumption that
JPEG had a very high CPU cost, and thus JPEG is used only
sparingly.) -- Added a new configure variable, JPEG_LDFLAGS. This
is necessitated by the fact that libjpeg-turbo often distributes
libjpeg.a and in /opt/libjpeg-turbo/lib32 or
/opt/libjpeg-turbo/lib64, and many people prefer to statically
link with it. Thus, more flexibility is needed than is provided by
--with-jpeg. If JPEG_LDFLAGS is specified, then it overrides the
changes to LDFLAGS enacted by --with-jpeg (but --with-jpeg is
still used to set the include path.) The addition of JPEG_LDFLAGS
necessitated replacing AC_CHECK_LIB with AC_LINK_IFELSE (because
AC_CHECK_LIB automatically sets LIBS to -ljpeg, which is not what we
want if we're, for instance, linking statically with libjpeg-turbo.)
-- configure does not check for PNG support if TurboVNC encoding is
enabled. This prevents the rfbSendRectEncodingTightPng() function
from being compiled in, since the TurboVNC encoder doesn't (and
can't) support it. common/turbojpeg.c, common/turbojpeg.h -- TurboJPEG is a simple API
used to compress and decompress JPEG images in memory. It was
originally implemented because it was desirable to use different
types of underlying technologies to compress JPEG on different
platforms (mediaLib on SPARC, Quicktime on PPC Macs, Intel
Performance Primitives, etc.) These days, however, libjpeg-turbo
is the only underlying technology used by TurboVNC, so TurboJPEG's
purpose is largely just code simplicity and flexibility. Thus,
since there is no real need for libvncserver to use any technology
other than libjpeg-turbo for compressing JPEG, the TurboJPEG wrapper
for libjpeg-turbo has been included in-tree so that libvncserver can
be directly linked with libjpeg-turbo. This is convenient because
many modern Linux distros (Fedora, Ubuntu, etc.) now ship
libjpeg-turbo as their default libjpeg library. libvncserver/rfbserver.c -- Added logic to check for the TurboVNC
fine-grained quality level and subsampling encodings and to map
Tight (0-9) quality levels to appropriate fine-grained quality level
and subsampling values if communicating with a TightVNC/TigerVNC
viewer. libvncserver/turbo.c -- TurboVNC encoder (compiled instead of
libvncserver/tight.c) rfb/rfb.h -- Added support for the TurboVNC subsampling level rfb/rfbproto.h -- Added constants for the TurboVNC fine quality
level and subsampling encodings as well as the rfbTightNoZlib
constant and notes on its usage.
2012-03-10 Christian Beier <>
* client_examples/SDLvncviewer.c, libvncclient/listen.c,
libvncclient/sockets.c, libvncclient/vncviewer.c,
libvncserver/sockets.c, rfb/rfbclient.h: IPv6 support for
LibVNCServer, part three: make reverse connections IPv6-capable. Besided making libvncserver reverseVNC IPv6-aware, this introduces
some changes on the client side as well to make clients listen on
IPv6 sockets, too. Like the server side, this also uses a
separate-socket approach.
2012-03-10 Christian Beier <>
* libvncserver/sockets.c: IPv6 support for LibVNCServer, part
onepointseven: Plug a memleak. We have to properly free the addrinfo struct when jumping out of the
2012-03-09 Christian Beier <>
* webclients/index.vnc: IPv6 support for LibVNCServer, part
twopointone: properly surround IPv6 addresses with [] for noVNC URL. Some browsers omit the square brackets in
document.location.hostname, so add them if missing.
2012-02-27 Christian Beier <>
* libvncserver/cargs.c, libvncserver/httpd.c, libvncserver/main.c,
rfb/rfb.h: IPv6 support for LibVNCServer, part two: Let the http
server listen on IPv6, too. As done with the RFB sockets, this uses a separate-socket approach
as well.
2012-02-27 Christian Beier <>
* libvncserver/main.c: IPv6 support for LibVNCServer, part
onepointsix: fix a small logic error. Without this, we would have gotten a stale IPv4 socket in a race
2012-02-27 Christian Beier <>
* libvncserver/rfbserver.c, libvncserver/sockets.c: IPv6 support for
LibVNCServer, part onepointfive: Fix compilation with IPv6 missing. There was an oversight that crept in...
2012-02-20 Christian Beier <>
* libvncserver/cargs.c, libvncserver/main.c,
libvncserver/rfbserver.c, libvncserver/sockets.c, rfb/rfb.h: IPv6
support for LibVNCServer, part one: accept IPv4 and IPv6
connections. This uses a separate-socket approach since there are systems that do
not support dual binding sockets under *any* circumstances, for
instance OpenBSD. Using separate sockets for IPv4 and IPv6 is thus
more portable than having a v6 socket handle v4 connections as well. Signed-off-by: Christian Beier <>
2012-02-11 Mateus Cesar Groess <>
* AUTHORS, client_examples/,
client_examples/gtkvncviewer.c, Here is a port of
SDLvncviewer to GTK+2. I think it may encourage people to implement more features for the
viewer, because a GTK GUI seems to be easier to implement than a SDL
one (and it is more integrated with the major Linux Desktops out
there). Signed-off-by: Christian Beier <>
2012-02-11 Christian Beier <>
2012-02-10 Kyle J. McKay <>
* libvncserver/auth.c, libvncserver/rfbserver.c, rfb/rfb.h: Support
Mac OS X vnc client with no password Support connections from the Mac OS X built-in VNC client to
LibVNCServers running with no password and advertising a server
version of 3.7 or greater.
2012-02-04 Johannes Schindelin <>
* AUTHORS: Add Luca to the AUTHORS Signed-off-by: Johannes Schindelin <>
2012-02-04 Luca Stauble <>
* libvncclient/listen.c, libvncclient/sockets.c,
libvncclient/vncviewer.c, rfb/rfbclient.h: Add an optional parameter
to specify the ip address for reverse connections For security reasons, it can be important to limit which IP
addresses a LibVNCClient-based client should listen for reverse
connections. This commit adds that option. To preserve binary backwards-compatibility, the field was added to
the end of the rfbclient struct, and the function ListenAtTcpPort
retains its signature (but calls the new ListenAtTcpPortAndAddress). [jes: shortened the commit subject, added a longer explanation in
the commit body and adjusted style] Signed-off-by: Luca Stauble <> Signed-off-by:
Johannes Schindelin <>
2012-01-12 Gernot Tenchio <>
* libvncserver/websockets.c: websockets: removed debug message
2012-01-12 Gernot Tenchio <>
* libvncserver/websockets.c: websockets: restore errno after logging
an error
2012-01-12 Gernot Tenchio <>
* CMakeLists.txt: cmake: adapted to latest websocket crypto changes
2011-12-15 Christian Beier <>
* rfb/rfbclient.h: Small changes to LibNVCClient doxygen
2011-12-01 Christian Beier <>
* libvncserver/ Fix build error when libpng is
available, but libjpeg is not. The png stuff in tight.c depends on code in tight.c that uses
libjpeg features. We could probably seperate that, but for now the
dependency for 'tight' goes: PNG depends on JPEG depends on ZLIB. This is reflected in now. NB: Building tight.c with JPEG but without PNG is still possible, but nor the other way around.
2011-12-01 Christian Beier <>
* Use AM_SILENT_RULES only when it's actually
available. Otherwise building breaks with older make versions. Happens on OS X
10.6 for instance.
2011-11-09 Christian Beier <>
*, webclients/, webclients/index.vnc,
atch, webclients/java-applet/ssl/ultra.vnc,
webclients/ssl/, webclients/ssl/README,
webclients/ssl/index.vnc, webclients/ssl/onetimekey,
webclients/ssl/proxy.vnc, webclients/ssl/ss_vncviewer,
webclients/ssl/ultra.vnc, webclients/ssl/ultraproxy.vnc,
webclients/ssl/ultravnc-102-JavaViewer-ssl-etc.patch: Move the java
stuff into webclients/java-applet.
2011-11-09 Christian Beier <>
*,, README, classes/,
classes/index.vnc, classes/javaviewer.pseudo_proxy.patch,
classes/novnc/LICENSE.txt, classes/novnc/,
classes/novnc/favicon.ico, classes/novnc/include/base.css,
classes/novnc/include/base64.js, classes/novnc/include/black.css,
classes/novnc/include/blue.css, classes/novnc/include/des.js,
classes/novnc/include/display.js, classes/novnc/include/input.js,
classes/novnc/include/logo.js, classes/novnc/include/playback.js,
classes/novnc/include/rfb.js, classes/novnc/include/ui.js,
classes/novnc/include/util.js, classes/novnc/include/vnc.js,
classes/novnc/include/websock.js, classes/novnc/include/webutil.js,
classes/novnc/vnc.html, classes/novnc/vnc_auto.html,
classes/ssl/, classes/ssl/README, classes/ssl/index.vnc,
classes/ssl/onetimekey, classes/ssl/proxy.vnc,
classes/ssl/ultra.vnc, classes/ssl/ultraproxy.vnc,
examples/example.c, examples/pnmshow.c, examples/pnmshow24.c,
rfb/rfb.h, webclients/, webclients/index.vnc,
webclients/novnc/LICENSE.txt, webclients/novnc/,
webclients/novnc/favicon.ico, webclients/novnc/include/base.css,
webclients/novnc/include/blue.css, webclients/novnc/include/des.js,
webclients/novnc/include/rfb.js, webclients/novnc/include/ui.js,
webclients/novnc/include/util.js, webclients/novnc/include/vnc.js,
webclients/novnc/include/webutil.js, webclients/novnc/vnc.html,
webclients/novnc/vnc_auto.html, webclients/ssl/,
webclients/ssl/README, webclients/ssl/index.vnc,
webclients/ssl/onetimekey, webclients/ssl/proxy.vnc,
webclients/ssl/ultra.vnc, webclients/ssl/ultraproxy.vnc,
webclients/ssl/ultravnc-102-JavaViewer-ssl-etc.patch: Rename
'classes' dir to 'webclients'.
2011-11-09 Christian Beier <>
* classes/index.vnc, libvncserver/httpd.c: novnc client: use the
client's notion about the server hostname instead of what the server
2011-11-09 Christian Beier <>
* classes/index.vnc: Fix tiny typo.
2011-11-09 Christian Beier <>
* NEWS: Add NEWS entry.
2011-11-09 Christian Beier <>
* libvncclient/rfbproto.c: When GetCredential() callback is not set,
don't use authentications requiring it. The auth methods that employ Getcredential() will only be used if
the client's GetCredential callback is actually set.
2011-10-12 Christian Beier <>
* ChangeLog: Update ChangeLog for
2011-10-12 Christian Beier <>
* CMakeLists.txt, NEWS, Update version number in
autotools && cmake, NEWS entry.
2011-10-26 Peter Watkins <>
* rfb/rfbclient.h: Added comments.
2011-10-26 Christian Beier <>
* libvncserver/rfbserver.c: Fix deadlock in threaded mode when using
nested rfbClientIteratorNext() calls. Lengthy explanation follows... First, the scenario before this patch: We have three clients 1,2,3 connected. The main thread loops through
them using rfbClientIteratorNext() (loop L1) and is currently at
client 2 i.e. client 2's cl_2->refCount is 1. At this point we need
to loop again through the clients, with cl_2->refCount == 1, i.e. do
a loop L2 nested within loop L1. BUT: Now client 2 disconnects, it's clientInput thread terminates
its clientOutput thread and calls rfbClientConnectionGone(). This
LOCKs clientListMutex and WAITs for cl_2->refCount to become 0. This
means this thread waits for the main thread to release cl_2.
Waiting, with clientListMutex LOCKed! Meanwhile, the main thread is about to begin the inner
rfbClientIteratorNext() loop L2. The first call to
rfbClientIteratorNext() LOCKs clientListMutex. BAAM. This mutex is
locked by cl2's clientInput thread and is only released when
cl_2->refCount becomes 0. The main thread would decrement
cl_2->refCount when it would continue with loop L1. But it's waiting
for cl2's clientInput thread to release clientListMutex. Which never
happens since this one's waiting for the main thread to decrement
cl_2->refCount. DEADLOCK. Now, situation with this patch: Same as above, but when client 2 disconnects it's clientInput thread
rfbClientConnectionGone(). This again LOCKs clientListMutex, removes
cl_2 from the linked list and UNLOCKS clientListMutex. The WAIT for
cl_2->refCount to become 0 is _after_ that. Waiting, with
clientListMutex UNLOCKed! Therefore, the main thread can continue, do the inner loop L2 (now
only looping through 1,3 - 2 was removed from the linked list) and
continue with loop L1, finally decrementing cl_2->refCount, allowing
cl2's clientInput thread to continue and terminate. The resources
held by cl2 are not free()'d by rfbClientConnectionGone until
cl2->refCount becomes 0, i.e. loop L1 has released cl2.
2011-10-16 Johannes Schindelin <>
* AUTHORS: Update AUTHORS Signed-off-by: Johannes Schindelin <>
2011-10-16 George Fleury <>
* libvncserver/rfbserver.c: Fix memory leak I was debbuging some code tonight and i found a pointer that is not
been freed, so i think there is maybe a memory leak, so it is... there is the malloc caller reverse order: ( malloc cl->statEncList ) <- rfbStatLookupEncoding <- rfbStatRecordEncodingSent <- rfbSendCursorPos <- rfbSendFramebufferUpdate <- rfbProcessEvents I didnt look the whole libvncserver api, but i am using
rfbReverseConnection with rfbProcessEvents, and then when the client
connection dies, i am calling a rfbShutdownServer and
rfbScreenCleanup, but the malloc at rfbStatLookupEncoding isnt been
freed. So to free the stats i added a rfbResetStats(cl) after
rfbPrintStats(cl) at rfbClientConnectionGone in rfbserver.c before
free the cl pointer. (at rfbserver.c line 555). And this, obviously,
is correcting the memory leak. Signed-off-by: Johannes Schindelin <>
2011-10-08 Johannes Schindelin <>
* rfb/rfbclient.h: Hopefully fix the crash when updating from 0.9.7
or earlier For backwards-compatibility reasons, we can only add struct members
to the end. That way, existing callers still can use newer
libraries, as the structs are always allocated by the library (and
therefore guaranteed to have the correct size) and still rely on the
same position of the parts the callers know about. Reported by Luca Falavigna. Signed-off-by: Johannes Schindelin <>
2011-10-09 Johannes Schindelin <>
* client_examples/SDLvncviewer.c: SDLvncviewer: make it resizable by
default I got annoyed having to specify -resizable all the time; I never use
it in another mode anymore, since I am on a netbook. The option -no-resizable was added to be able to switch off that
feature. Signed-off-by: Johannes Schindelin <>
2011-10-06 Christian Beier <>
* libvncserver/httpd.c: httpd: fix sending of binary data such as
images. We do this simply by omitting the content-type and let the browser
decide upon the mime-type of the sent file. Only exception is
'index.vnc', where we do set the content-type since some browsers
fail to detect it's html when it's ending in '.vnc' Also, remove superfluous #defines. We close the connection always.
2011-10-06 Christian Beier <>
* classes/index.vnc: Fix typo && use proper website.
2011-10-04 Christian Beier <>
* classes/index.vnc, classes/novnc/LICENSE.txt,
classes/novnc/, classes/novnc/favicon.ico,
classes/novnc/include/base.css, classes/novnc/include/base64.js,
classes/novnc/include/black.css, classes/novnc/include/blue.css,
classes/novnc/include/des.js, classes/novnc/include/display.js,
classes/novnc/include/input.js, classes/novnc/include/logo.js,
classes/novnc/include/playback.js, classes/novnc/include/rfb.js,
classes/novnc/include/ui.js, classes/novnc/include/util.js,
classes/novnc/include/websock.js, classes/novnc/include/webutil.js,
classes/novnc/vnc.html, classes/novnc/vnc_auto.html,
libvncserver/httpd.c: Add noVNC HTML5 client connect possibility to
our http server. Pure JavaScript, no Java plugin required anymore! (But a recent
2011-10-04 Christian Beier <>
* This build warning is a libvncserver one, not for
x11vnc. Also, make it warn more generally when no known encryption lib is
2011-09-21 Gernot Tenchio <>
* common/md5.c: md5: forced to use function names with leading
underscores Commented out the surrounding '#ifdef _LIBC' to build md5.o with
leading underscores. This is required to match the prototypes
defined in md5.h.
2011-09-20 Gernot Tenchio <>
* libvncserver/rfbcrypto_included.c: rfbcrypto_included: fix c&p
2011-09-20 Gernot Tenchio <>
* libvncserver/rfbcrypto_polarssl.c: rfbcrypto_polarssl: it was way
to late last night...
2011-09-18 Gernot Tenchio <>
* libvncserver/, libvncserver/rfbcrypto.h,
libvncserver/rfbcrypto_gnutls.c, libvncserver/rfbcrypto_included.c,
libvncserver/rfbcrypto_polarssl.c, libvncserver/websockets.c: Add
support for different crypto implementations
2011-09-11 Christian Beier <>
*, libvncserver/ Autotools: Fix OpenSSL and
GnuTLS advertisement.
2011-09-11 Christian Beier <>
* libvncserver/rfbssl_gnutls.c: Fix libvncserver GnuTLS init. gnutls_certificate_set_x509_trust_file() returns the number of
processed certs and _not_ GNUTLS_E_SUCCESS (0) on success!
2011-09-11 Christian Beier <>
* AUTHORS, libvncserver/websockets.c: Update AUTHORS regarding the
websocket guys.
2011-08-28 Gernot Tenchio <>
* configure: Add AM_SILENT_RULES Working with “silent make mode” makes debugging a lot of easier
since warnings wont shadowed by useless compiler noise
2011-08-27 Gernot Tenchio <>
* CMakeLists.txt: cmake: set SOVERSION
2011-09-11 Christian Beier <>
*, libvncserver/ Autotools: Fix OpenSSL and
GnuTLS advertisement.
2011-09-11 Christian Beier <>
* libvncserver/rfbssl_gnutls.c: Fix libvncserver GnuTLS init. gnutls_certificate_set_x509_trust_file() returns the number of
processed certs and _not_ GNUTLS_E_SUCCESS (0) on success!
2011-09-11 Christian Beier <>
* AUTHORS, libvncserver/websockets.c: Update AUTHORS regarding the
websocket guys.
2011-09-02 Gernot Tenchio <>
* libvncserver/websockets.c: websocket: Use a single buffer for
both, encoding and decoding
2011-08-30 Gernot Tenchio <>
* libvncserver/rfbssl_gnutls.c: rfbssl_gnutls: Merge
rfbssl_peek/rfbssl_read into one function
2011-08-30 Gernot Tenchio <>
* libvncserver/websockets.c: websockets: fix
webSocketCheckDisconnect() Do not consume the peeked data if no close frame was detected.
2011-08-29 Gernot Tenchio <>
* libvncserver/websockets.c: websockets: use 32bit Xor in
2011-08-29 Gernot Tenchio <>
* CMakeLists.txt: cmake: use sha1.c for websocket builds
2011-08-25 Gernot Tenchio <>
* libvncserver/websockets.c: websockets: nothing to worry about
2011-08-25 Gernot Tenchio <>
* libvncserver/websockets.c: websockets: added gcrypt based sha1
digest funtion
2011-08-25 Joel Martin <>
* common/sha1.c, common/sha1.h, libvncserver/,
libvncserver/websockets.c: Add sha1.*. Remove UTF-8 encode. Protocol
handling. Add common/sha1.h and common/sha1.c so that we have the SHA routines
even if openssl is not available. From the IETF SHA RFC example
code. Remove the UTF-8 encoding hack. This was really just an experiment. If the protocol passed in the handshake has "binary" then don't
base64 encode for the HyBi protocol. This will allow noVNC to
request the binary data be passed raw and not base64 encoded.
Unfortunately, the client doesn't speak first in VNC protocol (bad
original design). If it did then we could determine whether to
base64 encode or not based on the first HyBi frame from the client
and whether the binary bit is set or not. Oh well. Misc Cleanup: - Always free response and buf in handshake routine. - Remove some unused variables.
2011-08-25 Gernot Tenchio <>
* CMakeLists.txt: cmake: make some noise
2011-08-25 Gernot Tenchio <>
* libvncserver/rfbssl_gnutls.c: websockets: remove warning on 64bit
2011-08-25 Gernot Tenchio <>
* libvncserver/websockets.c: websockets: Removed debugging left over
2011-08-25 Gernot Tenchio <>
* libvncserver/websockets.c: websockets: Use callback functions for
2011-08-25 Gernot Tenchio <>
* libvncserver/rfbserver.c, libvncserver/sockets.c,
libvncserver/websockets.c, rfb/rfb.h: websockets: Move Hixie
disconnect hack to websockets.c Move the hixie disconnect hack to websockets.c. Removed the
remaining websockets vars from rfbClientPtr, so all websockets stuff
is hidden behind an opaque pointer.
2011-08-25 Gernot Tenchio <>
* libvncserver/rfbserver.c, libvncserver/sockets.c,
libvncserver/websockets.c, rfb/rfb.h: websockets: Initial HyBi
2011-08-16 Gernot Tenchio <>
* CMakeLists.txt: cmake: don't link sdl libs to vnc libraries Signed-off-by: Johannes Schindelin <>
2011-08-16 Gernot Tenchio <>
* libvncserver/sockets.c, libvncserver/websockets.c, rfb/rfb.h:
websockets: Add wspath member to rfbClientRec Added wspath member to rfbClientRec which holds the path component
of the initial websocket request. Signed-off-by: Johannes Schindelin <>
2011-08-16 Gernot Tenchio <>
* CMakeLists.txt, common/md5.c, common/md5.h,
libvncserver/, libvncserver/md5.c, libvncserver/md5.h:
Move libvncserver/md5* to common Signed-off-by: Johannes Schindelin <>
2011-08-16 Gernot Tenchio <>
* CMakeLists.txt, rfb/rfbconfig.h.cmake: websockets: Add Websockets
support to CMakeLists.txt Signed-off-by: Johannes Schindelin <>
2011-08-16 Joel Martin <>
* libvncserver/, libvncserver/cargs.c: websockets: Add
SSL cert command line options. - Add --sslcertfile and --sslkeyfile. These should really be
combined with the existing x11vnc command line options for SSL
support. Signed-off-by: Johannes Schindelin <>
2011-08-17 Gernot Tenchio <>
*, libvncserver/,
libvncserver/rfbssl_gnutls.c, libvncserver/rfbssl_openssl.c:
websockets: add GnuTLS and OpenSSL support For now, only OpenSSL support is activated through configure, since
GnuTLS is only used in LibVNCClient. [jes: separated this out from the commit adding encryption support,
added autoconf support.] Signed-off-by: Johannes Schindelin <>
2011-08-16 Gernot Tenchio <>
* libvncserver/, libvncserver/rfbserver.c,
libvncserver/rfbssl.h, libvncserver/rfbssl_none.c,
libvncserver/sockets.c, libvncserver/websockets.c, rfb/rfb.h:
websockets: Add encryption support [jes: moved out GnuTLS and OpenSSL support, added a dummy support,
to separate changes better, and to keep things compiling] Signed-off-by: Johannes Schindelin <>
2011-08-16 Joel Martin <>
* libvncserver/websockets.c: websockets: Properly parse Hixie-76
handshake. Signed-off-by: Johannes Schindelin <>
2011-08-16 Joel Martin <>
* libvncserver/rfbserver.c, libvncserver/websockets.c: websockets:
Add UTF-8 encoding support. This is not completely standard UTF-8 encoding. Only code points
0-255 are encoded and never encoded to more than two octets. Since
'\x00' is a WebSockets framing character, it's easier for all
parties to encode zero as '\xc4\x80', i.e. 194+128, i.e. UTF-8 256. This means that a random stream will be slightly more than 50%
larger using this encoding scheme. But it's easy CPU-wise for client
and server to decode/encode. This is especially important for
clients written in languages that have weak bitops, like Javascript
(i.e. the noVNC client). Signed-off-by: Johannes Schindelin <>
2011-08-16 Joel Martin <>
* libvncserver/rfbserver.c: websockets: Better disconnect detection. If the only thing we are waiting on is a WebSockets terminator, then
remove it from the stream early on in rfbProcessClientNormalMessage. Signed-off-by: Johannes Schindelin <>
2011-08-16 Joel Martin <>
*, libvncserver/, libvncserver/md5.c,
libvncserver/md5.h, libvncserver/rfbserver.c,
libvncserver/sockets.c, libvncserver/websockets.c, rfb/rfb.h:
websockets: Initial WebSockets support. Has a bug: WebSocket client disconnects are not detected.
rfbSendFramebufferUpdate is doing a MSG_PEEK recv to determine if
enough data is available which prevents a disconnect from being
detected. Otherwise it's working pretty well. [jes: moved added struct members to the end for binary compatibility
with previous LibVNCServer versions, removed an unused variable] Signed-off-by: Johannes Schindelin <>
2011-08-17 Johannes Schindelin <>
* .gitignore: .gitignore: zippy has moved Signed-off-by: Johannes Schindelin <>
2011-07-25 Christian Beier <>
* examples/android/README: Add installation hints to android example
2011-07-22 William Roberts <>
* examples/android/jni/fbvncserver.c: Reduced memory footprint by
2011-07-22 William Roberts <>
* examples/android/jni/fbvncserver.c: Corrected resolution issue,
but screen is getting reported as wrong size
2011-07-23 ckanru <>
* examples/android/jni/fbvncserver.c: Fixes running vncserver on
beagleboard/0xdroid and possibly any device without a touch screen.
Because fake touch screen always report zero when query device
information, coordinates transformation is not needed. Signed-off-by: Christian Beier <>
2011-07-23 Christian Beier <>
*, examples/, examples/android/,
rfb/rfb.h, vncterm/ Adopt autotools build system to
Android. LibVNCServer/LibVNCClient now build for Android!
2011-07-23 Christian Beier <>
* examples/android/README, examples/android/jni/,
examples/android/jni/fbvncserver.c: Add androidvncserver example.
2011-07-22 letsgoustc <>
* rfb/rfb.h: Make LibVNCServer build for Android. Signed-off-by: Christian Beier <>
2011-07-19 Joel Martin <>
* libvncserver/tight.c: tightPng: check even for SendGradientRect. Signed-off-by: Christian Beier <>
2011-07-19 Joel Martin <>
* CMakeLists.txt,, libvncserver/,
libvncserver/rfbserver.c, libvncserver/stats.c,
libvncserver/tight.c, rfb/rfb.h, rfb/rfbconfig.h.cmake,
rfb/rfbproto.h: tightPng: Add initial tightPng encoding support. Signed-off-by: Joel Martin <> Signed-off-by:
Christian Beier <>
2011-06-01 Christian Beier <>
* libvncserver/main.c, libvncserver/sockets.c: Remove some unused
2010-11-14 George Kiagiadakis <>
* libvncserver/sockets.c, rfb/rfb.h: Fix rfbProcessNewConnection to
return some value instead of void. BUG: 256891 Signed-off-by: Christian Beier <>
2010-11-10 George Kiagiadakis <>
* libvncserver/main.c, libvncserver/sockets.c, rfb/rfb.h: Split two
event-loop related functions out of the rfbProcessEvents()
mechanism. This is required to be able to do proper event loop integration with
Qt. Idea was taken from vino's libvncserver fork. Signed-off-by: Christian Beier <>
2011-05-06 Cristian Rodríguez <>
* libvncserver/tightvnc-filetransfer/filetransfermsg.c: Fix buffer
overflow Signed-off-by: Cristian Rodríguez <>
Signed-off-by: Christian Beier <>
2011-04-30 Christian Beier <>
* libvncserver/tight.c: Revert "Fix memory corruption bug." This reverts commit c1363fa9583ed41b94fbc79b3ff410b7d5189407. The proper fix was already in
2011-04-28 Johannes Schindelin <>
* AUTHORS: UTF-8ify AUTHORS Signed-off-by: Johannes Schindelin <>
2011-04-28 Johannes Schindelin <>
* AUTHORS: Update AUTHORS Signed-off-by: Johannes Schindelin <>
2010-11-10 George Kiagiadakis <>
* libvncserver/tight.c: Fix memory corruption bug. This bug occured when a second telepathy tubes client was connected
after the first one had disconnected and the channel (thus, the
screen too) had been destroyed. Signed-off-by: Johannes Schindelin <>
2010-11-10 George Kiagiadakis <>
* common/zywrletemplate.c, libvncserver/auth.c,
libvncserver/rfbserver.c, libvncserver/scale.c,
libvncserver/scale.h, rfb/rfb.h: Fix compilation in c89 mode. Signed-off-by: Johannes Schindelin <>
2011-04-27 Vic Lee <>
* libvncclient/tls.c: Replace deprecated GnuTLS functions
gnutls_*_set_priority with gnutls_priority_set_direct. The functions gnutls_*_set_priority we used were marked deprecated
since latest GnuTLS version 2.12. However the replacement function
gnutls_priority_set_direct is available since 2.2, which is even
lower than our version requirement 2.4 in configure. The patch just
replace the deprecate function to fix the compile warning. Signed-off-by: Vic Lee <> Signed-off-by: Johannes
Schindelin <>
2011-03-30 Christian Beier <>
* ChangeLog: Update ChangeLog for 0.9.8.
2011-03-29 Christian Beier <>
* README: Remove RDP from the README description. We do VNC but no RDP. Pointed out by Vic Lee, thanks!
2011-03-29 Christian Beier <>
* utils/ Fix skipping of merge commits in log convert
2011-03-29 Christian Beier <>
*,, utils/,
utils/, utils/ Add a git-log to GNU-Style
ChangeLog converter script. Also put all helper scripts into a utils directory.
2011-03-28 Christian Beier <>
* NEWS: Mention the pkg-config stuff in NEWS.
2011-03-27 Vic Lee <>
* .gitignore,,,, Add libvncserver.pc and libvncclient.pc files. Signed-off-by: Vic Lee <> Signed-off-by: Christian
Beier <>
2011-03-17 Christian Beier <>
* libvncclient/ultra.c, libvncserver/ultra.c: Fix regression in
Ultra encoding introduced by commit
fe1ca16e9b75b5f38ab374c8dfff92d2c3ea4532. My bad. There we see what the encodings test is good for ;-)
20 years ago
2011-03-17 Christian Beier <>
* test/encodingstest.c: Update encodingstest. * Fixed segfault on shutdown. * Updated to test all encodings. * Fixed to operate with encodings that split up rects into smaller rects.
2011-03-17 Christian Beier <>
* libvncclient/rfbproto.c: Remove useless comparisons that always
evaluate to false. There can not be more than 255 security types and MSLogon is RFB 3.6
2011-03-17 Christian Beier <>
* examples/rotate.c, examples/rotatetemplate.c, examples/vncev.c,
libvncclient/listen.c, libvncclient/rfbproto.c,
libvncclient/ultra.c, libvncclient/zrle.c,
libvncserver/rfbserver.c, libvncserver/ultra.c: Fix (most) MinGW32
compiler warnings.
2011-03-17 Christian Beier <>
* examples/rotate.c, examples/zippy.c, libvncserver/zrle.c,
libvncserver/zrleencodetemplate.c: Fix remaining compiler warnings.
2011-03-17 Christian Beier <>
* VisualNaCro/nacro.c, examples/backchannel.c, examples/camera.c,
examples/colourmaptest.c, examples/example.c,
examples/filetransfer.c, examples/fontsel.c, examples/mac.c,
examples/pnmshow.c, examples/pnmshow24.c, examples/simple.c,
examples/simple15.c, examples/vncev.c, examples/zippy.c,
test/cargstest.c, test/copyrecttest.c, test/cursortest.c,
test/encodingstest.c: Check rfbGetScreen() return value everywhere. This fixes a segfault when a server is invoked with the '-help'
commandline argument.
2011-03-12 Christian Beier <>
* CMakeLists.txt, rfb/rfbconfig.h.cmake: CMake: Check for libgcrypt
2011-03-12 Christian Beier <>
* CMakeLists.txt: CMake: Threads can be available even if SDL is
2011-03-12 Christian Beier <>
* CMakeLists.txt: CMake: fix building SDLvncviewer.