Commit Graph

57 Commits (98f4037785246f77e544bab9196f076fe310be16)

Author SHA1 Message Date
Christian Beier e7dfd0a9d6 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.
13 years ago
Christian Beier 0e74b5db9a IPv6 support for LibVNCServer, part onepointsix: fix a small logic error.
Without this, we would have gotten a stale IPv4 socket in a race
condition.
13 years ago
Christian Beier 83a7c713a9 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 <dontmind@freeshell.org>
13 years ago
Christian Beier 17ce0c5628 Remove some unused variables. 14 years ago
George Kiagiadakis 9f8d8d4ef3 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 <dontmind@freeshell.org>
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
Christian Beier a5f8d3a310 libvncserver: fix endless loop when server closed client in threaded mode.
Signed-off-by: Christian Beier <dontmind@freeshell.org>
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 5da7c7a71a Added missing initialization of extension mutex
When not calling rfbRegisterProtocolExtension() the extension mutex
is uninitialized but used upon calling rfbGetExtensionIterator() and
rfbReleaseExtensionIterator() in rfbNewTCPOrUDPClient(). This causes
libvncserver to crash on Win32 when building with thread support.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
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
runge 0142acdded Some broken build environments treat fprintf(fh, buf) as a fatal error... 16 years ago
runge 804335f9d2 Thread safety for zrle, zlib, tight.
Proposed tight security type fix for debian bug 517422.
16 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
steven_carr 1955526d45 Plugged some memory leakage 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
steven_carr 2670641432 Client Independent Server Side Scaling is now supported
Both PalmVNC and UltraVNC SetScale messages are supported
19 years ago
dscho 1602b345f3 add KeyboardLedState extension 19 years ago
dscho 4130598960 do not timeout on idle client input (with pthreads) 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 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 d15e35586b kill BackChannel and CustomClientMessage: the new extension technique makes these hooks obsolete 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 94fcd86cc2 Security is global. This was a misguided attempt to evade a global list.
I eventually saw the light and went with Rohit´s original approach.
20 years ago
dscho da7b3e714f support VNC protocol version 3.7 20 years ago
runge 9d43e8af78 main.c: fix screen->deferUpdateTime default. 20 years ago
runge 89148d774f main.c: no sraRgnSubstract for copyRect, scrolls for x11vnc -scale; add -fixscreen 20 years ago
runge 4effb62e99 main.c: fix copyRect for non-cursor-shape-aware clients. 20 years ago
dscho 2b3f56d361 fix off by one bug 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 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
runge 1bb36df34e libvncserver/main.c: fix memory leak in rfbDoCopyRect/rfbScheduleCopyRect; configure.ac tweaks. 20 years ago
runge b8b96689bf add '-listen ipaddr' option 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