Commit Graph

1266 Commits (0f25ea732441f4d0468065f85e34f14514ed2376)
 

Author SHA1 Message Date
Christian Beier 27b4372c94 When GetCredential() callback is not set, don't use authentications requiring it.
The auth methods that employ Getcredential() will only be used if the client's
GetCredential callback is actually set.
13 years ago
Christian Beier 14c8943c92 Update ChangeLog for 0.9.8.1. 13 years ago
Christian Beier 609ccec1a0 Update version number in autotools && cmake, NEWS entry. 13 years ago
Peter Watkins b551e05edb Added comments. 14 years ago
Christian Beier 3df7537a30 Fix deadlock in threaded mode when using nested rfbClientIteratorNext() calls.
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.
14 years ago
Johannes Schindelin e3b8aaab86 Update AUTHORS
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
14 years ago
George Fleury fba4818ae8 Fix memory leak
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>
14 years ago
Johannes Schindelin 9d0b80059a Hopefully fix the crash when updating from 0.9.7 or earlier
For backwards-compatibility reasons, we can only add struct members to the
end. That way, existing callers still can use newer libraries, as the
structs are always allocated by the library (and therefore guaranteed to
have the correct size) and still rely on the same position of the parts
the callers know about.

Reported by Luca Falavigna.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
14 years ago
Johannes Schindelin 84be9d3f49 SDLvncviewer: make it resizable by default
I got annoyed having to specify -resizable all the time; I never use it in
another mode anymore, since I am on a netbook.

The option -no-resizable was added to be able to switch off that feature.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
14 years ago
Christian Beier 5756b133f7 httpd: fix sending of binary data such as images.
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.
14 years ago
Christian Beier 03d9b51917 Fix typo && use proper website. 14 years ago
Christian Beier edbd5ab8d4 Add noVNC HTML5 client connect possibility to our http server.
Pure JavaScript, no Java plugin required anymore! (But a recent browser...)
14 years ago
Christian Beier bffd9ee33b Merge branch 'websockets' 14 years ago
Christian Beier abec0aa8c3 This build warning is a libvncserver one, not for x11vnc.
Also, make it warn more generally when no known encryption lib is
available.
14 years ago
Christian Beier 7c0aa2a0c0 Merge branch 'websockets' of https://github.com/kanaka/libvncserver into websockets 14 years ago
Gernot Tenchio 78bd41ad5e md5: forced to use function names with leading underscores
Commented out the surrounding '#ifdef _LIBC' to build md5.o with
leading underscores. This is required to match the prototypes defined
in md5.h.
14 years ago
Christian Beier b1561e14a1 Merge branch 'websockets' of https://github.com/kanaka/libvncserver into websockets 14 years ago
Gernot Tenchio 170033a907 rfbcrypto_included: fix c&p errors 14 years ago
Christian Beier 419641f1f9 Merge remote branch 'kanaka/websockets' into websockets
Conflicts, resolved manually:
	libvncserver/Makefile.am
14 years ago
Gernot Tenchio d4cfc260fe rfbcrypto_polarssl: it was way to late last night... 14 years ago
Gernot Tenchio bd9cae3d12 Add support for different crypto implementations 14 years ago
Christian Beier cb0340ccc5 Autotools: Fix OpenSSL and GnuTLS advertisement. 14 years ago
Christian Beier 2046cc9abd Fix libvncserver GnuTLS init.
gnutls_certificate_set_x509_trust_file() returns the number of processed
certs and _not_ GNUTLS_E_SUCCESS (0) on success!
14 years ago
Christian Beier 98a9d49c05 Update AUTHORS regarding the websocket guys. 14 years ago
Gernot Tenchio eab1531525 configure: Add AM_SILENT_RULES
Working with “silent make mode” makes debugging a lot of easier
since warnings wont shadowed by useless compiler noise
14 years ago
Gernot Tenchio f6eeb5d383 cmake: set SOVERSION 14 years ago
Christian Beier fa458d48ec Autotools: Fix OpenSSL and GnuTLS advertisement. 14 years ago
Christian Beier 431518add4 Fix libvncserver GnuTLS init.
gnutls_certificate_set_x509_trust_file() returns the number of processed
certs and _not_ GNUTLS_E_SUCCESS (0) on success!
14 years ago
Christian Beier 507c3c7361 Update AUTHORS regarding the websocket guys. 14 years ago
Gernot Tenchio 2c45d08dd8 websocket: Use a single buffer for both, encoding and decoding 14 years ago
Gernot Tenchio 3eec976558 Merge branch 'kanaka/websockets' into websockets
Conflicts:
	libvncserver/websockets.c
14 years ago
Gernot Tenchio 7d1c1033c5 rfbssl_gnutls: Merge rfbssl_peek/rfbssl_read into one function 14 years ago
Gernot Tenchio b1671e6de9 websockets: fix webSocketCheckDisconnect()
Do not consume the peeked data if no close frame was detected.
14 years ago
Gernot Tenchio 0f2ac00f6e websockets: use 32bit Xor in webSocketsDecodeHybi() 14 years ago
Gernot Tenchio b16e8c2afb cmake: use sha1.c for websocket builds 14 years ago
Gernot Tenchio fd73186769 websockets: nothing to worry about 14 years ago
Gernot Tenchio 7b80ff5b3a websockets: added gcrypt based sha1 digest funtion 14 years ago
Joel Martin d8b7f7a7d6 Add sha1.*. Remove UTF-8 encode. Protocol handling.
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.
14 years ago
Gernot Tenchio 27eadfa899 cmake: make some noise 14 years ago
Gernot Tenchio e22b7acbc8 websockets: remove warning on 64bit platforms 14 years ago
Gernot Tenchio 099e5c8251 websockets: Removed debugging left over 14 years ago
Gernot Tenchio 72b18fdfb7 websockets: Use callback functions for encode/decode 14 years ago
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 02651bacca cmake: don't link sdl libs to vnc libraries
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
14 years ago
Gernot Tenchio 297072a691 websockets: Add wspath member to rfbClientRec
Added wspath member to rfbClientRec which holds the
path component of the initial websocket request.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
14 years ago
Gernot Tenchio b543d48677 Move libvncserver/md5* to common
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
14 years ago
Gernot Tenchio c2fb69f84d websockets: Add Websockets support to CMakeLists.txt
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
14 years ago
Joel Martin 9afe4e1faa websockets: Add SSL cert command line options.
- 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>
14 years ago
Gernot Tenchio a2a6e25699 websockets: add GnuTLS and OpenSSL support
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>
14 years ago