Commit Graph

76 Commits (4d9178dcf26e02f95f645417c4360cf0dda24dcc)

Author SHA1 Message Date
Gernot Tenchio 55234a37fd 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.
14 years ago
Gernot Tenchio 1408866c86 websockets: Initial HyBi support 14 years ago
Gernot Tenchio 4aa3586367 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 <johannes.schindelin@gmx.de>
14 years ago
Joel Martin 430b8f2449 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 <johannes.schindelin@gmx.de>
14 years ago
Joel Martin 0860c4951f 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 <johannes.schindelin@gmx.de>
14 years ago
Joel Martin 6fac22a74b 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 <johannes.schindelin@gmx.de>
14 years ago
Joel Martin 896ca2036c tightPng: Add initial tightPng encoding support.
http://wiki.qemu.org/VNC_Tight_PNG

Signed-off-by: Joel Martin <github@martintribe.org>
Signed-off-by: Christian Beier <dontmind@freeshell.org>
14 years ago
George Kiagiadakis 35246edddd Fix compilation in c89 mode.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
14 years ago
Christian Beier fe1ca16e9b Fix (most) MinGW32 compiler warnings. 14 years ago
Christian Beier cf72a0f7c3 Call WSAGetLastError() everywhere errno is read after a Winsock call.
Winsock does NOT update errno for us, we have fetch the last error
manually using WSAGetLastError().
14 years ago
Christian Beier 9f49600787 libvncserver: Make RRE, CoRRE and Ultra encodings thread-safe.
This adds generic before/after encoding buffers to the rfbClient
struct, so there is no need for thread local storage.

Signed-off-by: Christian Beier <dontmind@freeshell.org>
14 years ago
runge 658bef5fde Remove never used protocol version name string. 14 years ago
Christian Beier 453645a6ea libvncserver cleanup: remove rfbKeyFrame remnants. 14 years ago
Christian Beier e5523350a8 libvnc[server|client]: implement xvp VNC extension.
This implements the xvp VNC extension, which is described in the
community version of the RFB protocol:
http://tigervnc.sourceforge.net/cgi-bin/rfbproto
It is also mentioned in the official RFB protocol.
15 years ago
Tobias Doerffel 71ad3229f6 In rfbSendDirContent() we have to make sure to call closedir() before
returning. This did not happen if rfbSendFileTransferMessage() failed.

Signed-off-by: Christian Beier <dontmind@freeshell.org>
15 years ago
Christian Beier c0373e9cd4 Non-blocking sockets for Windows.
Expands the SetNonBlocking() function in libvncclient/sockets.c to also
work under Windows and also changes it to honour maybe already present
socket flags.

A similar function was introduced for libvncserver as well and
all the #ifdef'ed fnctl calls replaced with calls to that one.

Signed-off-by: Christian Beier <dontmind@freeshell.org>
15 years ago
Christian Beier 0df84e5c27 Cleanup: remove CORBA stuff.
The header file and most of the functions referred to
do not exist in libvncserver.

Signed-off-by: Christian Beier <dontmind@freeshell.org>
15 years ago
Christian Beier 09f7c684a2 Implement a DisplayFinishedHook for libvncserver.
If set, this hook gets called just before
rfbSendFrameBufferUpdate() returns.

Signed-off-by: Christian Beier <dontmind@freeshell.org>
15 years ago
Christian Beier 9ed410668c Fix checks for socket values, 0 is a legal value.
To make this work, we also have to initialize sockets
to a default value of -1.

Also close a client listen socket if it's open.

Signed-off-by: Christian Beier <dontmind@freeshell.org>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
16 years ago
runge 804335f9d2 Thread safety for zrle, zlib, tight.
Proposed tight security type fix for debian bug 517422.
16 years ago
runge dbfa4ad1f7 We seem to need to guard against freeing iterator 'i' twice in rfbSendFramebufferUpdate() (italc reported bug) 17 years ago
runge eaecbf4bec Handle colormaps with more than 256 colors. 17 years ago
dscho c17aef31ac Fix rfbSendSupportedEncodings
There was a long standing TODO to make the counting of the supported
encodings dynamic.  It never triggered, until ZYWRLE was added.

Noticed by Christian Ehrlicher.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
17 years ago
dscho c5173f364f Fix Swap16IfLE() on bytes
When swapping the values for the colour table to little-endian (because
they are 16-bit values), we need to cast "unsigned char" to "unsigned
short"; otherwise, Microsoft's compiler would keep complaining.

Noticed by Christian Ehrlicher.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
17 years ago
dscho 3d9a563983 Move tightQualityLevel out of the JPEG specific part
The variable tightQualityLevel is used for ZYWRLE compression, too,
so if libjpeg is not present, but libz is, we still need to have
that struct member.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
17 years ago
dscho 87fa3452c1 Add missing #include <time.h> (thanks Christian Ehrlicher)
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
17 years ago
dscho 059afcdf81 Add ZYWRLE server-side support (thanks Noriaki Yamazaki, Hitachi)
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
17 years ago
dscho 1df143d1a1 Avoid misaligned access on 64-bit machines
We used to assume that a char[256] is properly aligned to be cast to
an rfbServerInitMsg, but that was not the case.  So use a union instead.

Noticed by Flavio Leitner.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
18 years ago
runge e9353e8d29 More fixes to ultra java viewer, ultrafilexfer debugging output, fix -loop in .x11vncrc case. 18 years ago
runge a549c3aaff In rfbSendFileTransferChunk() check permitFileTransfer 1st to avoid false alarms. 18 years ago
runge 8b2bb65274 Drop client if UltraVNC filetransfer is not enabled. 18 years ago
dscho 61cd498fb2 Fix a locking problem in libvncserver
There seems to be a locking problem in libvncserver, with respect to how
condition variables are used.

On certain machines in our lab, when using a vncviewer to view a display
that has a very high rate of updates, we will occasionally see the VNC
server process crash.  In one stack trace that was obtained, an assertion
had tripped in glibc's pthread_cond_wait, which was called from
clientOutput.

Inspection of clientOutput suggests that WAIT is being called incorrectly.
The mutex that protects a condition variable should always be locked when
calling wait, and on return from the wait will still be locked.  The
attached patch fixes the locking around this condition variable, and one
other that I found by grepping the source for similar occurrences.

Signed-off-by: Charles Coffing <ccoffing@novell.com>
18 years ago
dscho b66c944fe3 compile fix for MinGW 18 years ago
runge 3d00472a9c x11vnc: improve ultravnc filexfer rate by calling rfbCheckFD more often 19 years ago
runge be2b77f2f2 x11vnc: clear DISPLAY for -unixpw su_verify, user supplied sig ignore. 19 years ago
steven_carr a60ee2ee9f RFB 3.8 clients are well informed 19 years ago
steven_carr 1955526d45 Plugged some memory leakage 19 years ago
steven_carr 2fa31ba4ea Permit auth.c to test major version 19 years ago
steven_carr 7218843ac0 Support sending TextChat messages back to the client 19 years ago
steven_carr 1c3af68549 Default to RFB 3.8, add command line option to specify the RFB version. 19 years ago
steven_carr ccdbe8f325 The great UltraVNC Compatibility Commit 19 years ago
runge 347c4a9847 fix some build issues WRT ultravnc code. 19 years ago
steven_carr 0d734ad896 Server Capability Encodings
rfbEncodingSupportedEncodings - What encodings are supported?
rfbEncodingSupportedMessages  - What message types are supported?
rfbEncodingServerIdentity     - What is the servers version string?
ie: "x11vnc: 0.8.1 lastmod: 2006-04-25 (LibVNCServer 0.9pre)"
19 years ago
steven_carr 2670641432 Client Independent Server Side Scaling is now supported
Both PalmVNC and UltraVNC SetScale messages are supported
19 years ago
steven_carr afa9fae024 Ultra Encoding added. Tested against UltraVNC V1.01 19 years ago
dscho 1602b345f3 add KeyboardLedState extension 19 years ago
dscho 10c61b53c2 ignore maxRectsPerUpdate when encoding is Zlib (thanks scarr) 19 years ago
dscho 0b7a0030ac rfbProcessEvents() has to iterate also over clients with sock < 0 to close them 19 years ago
dscho e673a125df make compile again with pthreads; fix off-by-one error 19 years ago
dscho 1c26789eff introduce -deferptrupdate (thanks Dave) 19 years ago