Commit Graph

102 Commits (61cd498fb21b5b2a3f63f336b1f1ed297f451c22)

Author SHA1 Message Date
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 11a5ea9ff9 fix typo. 18 years ago
runge 938ae66217 Remove stray ""-permitfiletransfer permit file transfer support" output. 18 years ago
runge a255783ee0 N_ENC_CAPS check does not work if libz is not present. 19 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 6bd995ec77 Better support for RFB >= 3.8 protocols 19 years ago
steven_carr a75a576e13 All security types for RFB >= 3.7 *have* to respond with a Security Result (Even rfbSecTypeNone) 19 years ago
runge 8417618289 move all types into handler loop. 19 years ago
steven_carr aa54531107 Security Type memory leak plugged. Leaks when rfb >= 3.7 clients connects.
The security list would grow 1 entry when clients connect.
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 52fb63d51b Specifically test for Major Version 3 added 19 years ago
steven_carr b5ab72d65f Statistics now fit into 80-column output 19 years ago
steven_carr 7039f24f61 Statistics output now fits in 80-column output 19 years ago
steven_carr 0a21bf330c Corrected Cursor Statistics reporting as messages 19 years ago
dscho bd12b13c91 remove unneeded file 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
runge 3c80351a1c Make VPATH building work with -I $(top_srcdir) for rfb/rfb.h 19 years ago
dscho 1602b345f3 add KeyboardLedState extension 19 years ago
runge 5920dc18d7 SSL patch for Java viewer. https support for x11vnc. 19 years ago
dscho 10c61b53c2 ignore maxRectsPerUpdate when encoding is Zlib (thanks scarr) 19 years ago
dscho 4130598960 do not timeout on idle client input (with pthreads) 19 years ago
dscho 0d40904d9f rfbCheckFds now returns the number of processed events 19 years ago
dscho f52cfa651b add handleEventsEagerly flag (Thanks, Donald) 19 years ago
rohit_99129 b7773ea6e6 Added method to get extension specific client data 19 years ago
rohit_99129 eb08d83d62 Added method to get extension specific client data 19 years ago
dscho d3599be1b8 add functions to unregister extensions/security types 19 years ago
runge 603b5667b6 fix some non-gcc compiler warnings and signals in x11vnc 19 years ago
runge 9b3163c00b logMutex needs to be initialized too; in rfbDefaultLog. 19 years ago
dscho 0b7a0030ac rfbProcessEvents() has to iterate also over clients with sock < 0 to close them 19 years ago
runge def3012663 fix client non-jpeg/libz builds 19 years ago
runge e781eea698 rfbRegisterProtocolExtension extMutex was never initialized. 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
dscho 3a8d4bdbe6 work around write() returning ENOENT on Solaris 2.7 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 808b6a0b23 do it right: it is not DEFINES, but AM_CFLAGS 20 years ago