Commit Graph

48 Commits (e6b592438ba4050a1f59192abebef5fb7395b290)

Author SHA1 Message Date
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
dscho 1b81e342cb assorted fixes for MinGW32 19 years ago
runge 8eb18f6cd8 fix deadlock from rfbReleaseExtensionIterator(), fix no libz/libjpeg builds, disable tightvnc-filetransfer if no libpthread, add --without-pthread option, rm // comments, set NAME_MAX if not defined, x11vnc: throttle load if fb update requests not taking place. 20 years ago
dscho 951ec26b7c The PseudoEncoding extension code was getting silly:
If the client asked for an encoding, and no enabled extension handled it,
LibVNCServer would walk through all extensions, and if they promised to handle
the encoding, execute the extension's newClient() if it was not NULL.

However, if newClient is not NULL, it will be called when a client connects,
and if it returns TRUE, the extension will be enabled. Since all the state of
the extension should be in the client data, there is no good reason why
newClient should return FALSE the first time (thus not enabling the extension),
but TRUE when called just before calling enablePseudoEncoding().

So in effect, the extension got enabled all the time, even if that was not
necessary.

The resolution is to pass a void** to enablePseudoEncoding. This has the
further advantage that enablePseudoEncoding can remalloc() or free() the
data without problems. Though keep in mind that if enablePseudoEncoding()
is called on a not-yet-enabled extension, the passed data points to NULL.
20 years ago
dscho d15e35586b kill BackChannel and CustomClientMessage: the new extension technique makes these hooks obsolete 20 years ago
dscho 60f1770e10 provide a list of the pseudo encodings understood by the extension 20 years ago
dscho 8490de3ff0 add enablePseudoEncoding() to rfbProtocolExtension 20 years ago
dscho 0a909fde7a This monster commit contains support for TightVNC's file transfer protocol.
Thank you very much, Rohit!
20 years ago
dscho 93be927b1c Introduce generic protocol extension method. Deprecate
the processCustomClientMessage() method.
20 years ago
dscho da7b3e714f support VNC protocol version 3.7 20 years ago
dscho ee52441372 hide strict ansi stuff if not explicitely turned on; actually use the socklen_t test from configure.ac 20 years ago
dscho c42529c3f8 fix SIGSEGV when client has incompatible protocol; release mutex before freeing it 20 years ago
dscho 8bee4eb990 ANSIfy, fix some warnings from Linus' sparse 20 years ago
runge be5b1296e4 libvncserver/{main.c,rfbserver.c}: fix a couple more CopyRect memory leaks 20 years ago
dscho 446a6fabac fix memory leaks detected using valgrind 20 years ago
dscho 34f714bcdc socketInitDone -> socketState 20 years ago
dscho 6602a22f2b clear requested region after handling it 20 years ago
dscho 914f7b71c5 10l: really fix preferredEncoding set from outside 20 years ago
dscho 155f4c1053 fix disappearing cursor 20 years ago
dscho a84b3d072a pointerClient was still static.
do not make requestedRegion empty without reason.

the cursor handling for clients which don't handle CursorShape updates was
completely broken. It originally was very complicated for performance
reasons, however, in most cases it made performance even worse, because at
idle times there was way too much checking going on, and furthermore,
sometimes unnecessary updates were inevitable.

The code now is much more elegant: the ClientRec structure knows exactly
where it last painted the cursor, and the ScreenInfo structure knows where
the cursor shall be.

As a consequence there is no more rfbDrawCursor()/rfbUndrawCursor(), no more
dontSendFramebufferUpdate, and no more isCursorDrawn.  It is now possible to
have clients which understand CursorShape updates and clients which don't at
the same time.

rfbSetCursor no longer has the option freeOld; this is obsolete, as the cursor
structure knows what to free and what not.
20 years ago
dscho a87e288f09 close socket in ClientConnectionGone 20 years ago
dscho e78a41c69c add hook to allow for custom client messages 20 years ago
dscho 28d09a73ce release client list mutex earlier 21 years ago
dscho 97299606da global structures/functions should have "rfb", "sra" or "zrle" as prefix,
while structure members should not
21 years ago
dscho 6bda09f03c fix CoRRE with maxRectsPerUpdate bug 21 years ago
runge e3c8cddef9 x11vnc: view-only plain passwd: -viewpasswd and 2nd line of -passwdfile 21 years ago
dscho 876868553d move the library into libvncserver/, x11vnc into x11vnc/ 21 years ago