summaryrefslogtreecommitdiffstats
path: root/libvncserver
Commit message (Collapse)AuthorAgeFilesLines
* IPv6 support for LibVNCServer, part two: Let the http server listen on IPv6, ↵Christian Beier2012-02-273-15/+88
| | | | | | too. As done with the RFB sockets, this uses a separate-socket approach as well.
* IPv6 support for LibVNCServer, part onepointsix: fix a small logic error.Christian Beier2012-02-271-1/+1
| | | | | Without this, we would have gotten a stale IPv4 socket in a race condition.
* IPv6 support for LibVNCServer, part onepointfive: Fix compilation with IPv6 ↵Christian Beier2012-02-272-0/+8
| | | | | | missing. There was an oversight that crept in...
* IPv6 support for LibVNCServer, part one: accept IPv4 and IPv6 connections.Christian Beier2012-02-204-19/+223
| | | | | | | | | 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>
* Support Mac OS X vnc client with no passwordKyle J. McKay2012-02-112-9/+49
| | | | | | 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.
* Merge branch 'websockets' of https://github.com/kanaka/libvncserverChristian Beier2012-01-121-7/+18
|\
| * websockets: removed debug messageGernot Tenchio2012-01-121-1/+1
| |
| * websockets: restore errno after logging an errorGernot Tenchio2012-01-121-6/+17
| |
* | Fix build error when libpng is available, but libjpeg is not.Christian Beier2011-12-011-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | 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 Makefile.am now. NB: Building tight.c with JPEG but without PNG is still possible, but nor the other way around.
* | Merge branch 'included-novnc'Christian Beier2011-11-171-23/+7
|\ \
| * | novnc client: use the client's notion about the server hostname instead of ↵Christian Beier2011-11-091-4/+0
| | | | | | | | | | | | what the server thinks.
| * | httpd: fix sending of binary data such as images.Christian Beier2011-10-061-17/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | Add noVNC HTML5 client connect possibility to our http server.Christian Beier2011-10-041-6/+4
| |/ | | | | | | Pure JavaScript, no Java plugin required anymore! (But a recent browser...)
* | Fix deadlock in threaded mode when using nested rfbClientIteratorNext() calls.Christian Beier2011-10-261-15/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | Fix memory leakGeorge Fleury2011-10-161-0/+1
|/ | | | | | | | | | | | | | | | | | | | | | | | | 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 <johannes.schindelin@gmx.de>
* rfbcrypto_included: fix c&p errorsGernot Tenchio2011-09-201-3/+3
|
* rfbcrypto_polarssl: it was way to late last night...Gernot Tenchio2011-09-201-2/+2
|
* Add support for different crypto implementationsGernot Tenchio2011-09-197-37/+212
|
* Autotools: Fix OpenSSL and GnuTLS advertisement.Christian Beier2011-09-191-4/+4
|
* Fix libvncserver GnuTLS init.Christian Beier2011-09-191-1/+1
| | | | | gnutls_certificate_set_x509_trust_file() returns the number of processed certs and _not_ GNUTLS_E_SUCCESS (0) on success!
* Update AUTHORS regarding the websocket guys.Christian Beier2011-09-191-0/+0
|
* websocket: Use a single buffer for both, encoding and decodingGernot Tenchio2011-09-081-16/+15
|
* Merge branch 'kanaka/websockets' into websocketsGernot Tenchio2011-08-303-251/+171
|\ | | | | | | | | Conflicts: libvncserver/websockets.c
| * rfbssl_gnutls: Merge rfbssl_peek/rfbssl_read into one functionGernot Tenchio2011-08-301-53/+35
| |
| * websockets: fix webSocketCheckDisconnect()Gernot Tenchio2011-08-301-1/+1
| | | | | | | | Do not consume the peeked data if no close frame was detected.
| * websockets: use 32bit Xor in webSocketsDecodeHybi()Gernot Tenchio2011-08-291-5/+10
| |
| * Add sha1.*. Remove UTF-8 encode. Protocol handling.Joel Martin2011-08-252-176/+126
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | websockets: nothing to worry aboutGernot Tenchio2011-08-251-4/+5
| |
* | websockets: added gcrypt based sha1 digest funtionGernot Tenchio2011-08-251-0/+15
| |
* | websockets: remove warning on 64bit platformsGernot Tenchio2011-08-251-1/+1
|/
* websockets: Removed debugging left overGernot Tenchio2011-08-251-1/+1
|
* websockets: Use callback functions for encode/decodeGernot Tenchio2011-08-251-17/+32
|
* websockets: Move Hixie disconnect hack to websockets.cGernot Tenchio2011-08-253-76/+79
| | | | | | 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.
* websockets: Initial HyBi supportGernot Tenchio2011-08-253-45/+392
|
* websockets: Add wspath member to rfbClientRecGernot Tenchio2011-08-172-0/+2
| | | | | | | Added wspath member to rfbClientRec which holds the path component of the initial websocket request. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
* Move libvncserver/md5* to commonGernot Tenchio2011-08-173-597/+1
| | | | Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
* websockets: Add SSL cert command line options.Joel Martin2011-08-172-0/+15
| | | | | | | - Add --sslcertfile and --sslkeyfile. These should really be combined with the existing x11vnc command line options for SSL support. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
* websockets: add GnuTLS and OpenSSL supportGernot Tenchio2011-08-173-1/+433
| | | | | | | | | | 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 <johannes.schindelin@gmx.de>
* websockets: Add encryption supportGernot Tenchio2011-08-176-26/+196
| | | | | | | [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>
* websockets: Properly parse Hixie-76 handshake.Joel Martin2011-08-171-21/+28
| | | | Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
* websockets: Add UTF-8 encoding support.Joel Martin2011-08-172-46/+88
| | | | | | | | | | | | | | | 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>
* websockets: Better disconnect detection.Joel Martin2011-08-171-0/+5
| | | | | | | 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>
* websockets: Initial WebSockets support.Joel Martin2011-08-176-2/+1164
| | | | | | | | | | | | | | 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>
* tightPng: check even for SendGradientRect.Joel Martin2011-07-221-0/+6
| | | | Signed-off-by: Christian Beier <dontmind@freeshell.org>
* tightPng: Add initial tightPng encoding support.Joel Martin2011-07-224-48/+331
| | | | | | | http://wiki.qemu.org/VNC_Tight_PNG Signed-off-by: Joel Martin <github@martintribe.org> Signed-off-by: Christian Beier <dontmind@freeshell.org>
* Remove some unused variables.Christian Beier2011-06-012-3/+0
|
* Fix rfbProcessNewConnection to return some value instead of void.George Kiagiadakis2011-06-011-6/+9
| | | | | | BUG: 256891 Signed-off-by: Christian Beier <dontmind@freeshell.org>
* Split two event-loop related functions out of the rfbProcessEvents() mechanism.George Kiagiadakis2011-06-012-56/+79
| | | | | | | 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>
* Fix buffer overflowCristian Rodríguez2011-05-091-1/+1
| | | | | Signed-off-by: Cristian Rodríguez <crrodriguez@opensuse.org> Signed-off-by: Christian Beier <dontmind@freeshell.org>
* Revert "Fix memory corruption bug."Christian Beier2011-04-301-2/+0
| | | | | | This reverts commit c1363fa9583ed41b94fbc79b3ff410b7d5189407. The proper fix was already in 804335f9d296440bb708ca844f5d89b58b50b0c6.