GUACAMOLE-414: Add version checks for TLS locking.
This commit is contained in:
parent
e9a10d66b7
commit
c90c057e12
@ -47,6 +47,7 @@
|
|||||||
#include <guacamole/socket.h>
|
#include <guacamole/socket.h>
|
||||||
#include <guacamole/timestamp.h>
|
#include <guacamole/timestamp.h>
|
||||||
#include <rfb/rfbclient.h>
|
#include <rfb/rfbclient.h>
|
||||||
|
#include <rfb/rfbconfig.h>
|
||||||
#include <rfb/rfbproto.h>
|
#include <rfb/rfbproto.h>
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@ -55,6 +56,7 @@
|
|||||||
|
|
||||||
char* GUAC_VNC_CLIENT_KEY = "GUAC_VNC";
|
char* GUAC_VNC_CLIENT_KEY = "GUAC_VNC";
|
||||||
|
|
||||||
|
#if LIBVNCSERVER_VERSION_MAJOR >=0 && LIBVNCSERVER_VERSION_MINOR >= 9 && LIBVNCSERVER_VERSION_PATCHLEVEL >= 11
|
||||||
/**
|
/**
|
||||||
* A callback function that is called by the VNC library prior to writing
|
* A callback function that is called by the VNC library prior to writing
|
||||||
* data to a TLS-encrypted socket. This returns the rfbBool FALSE value
|
* data to a TLS-encrypted socket. This returns the rfbBool FALSE value
|
||||||
@ -110,6 +112,7 @@ static rfbBool guac_vnc_unlock_write_to_tls(rfbClient* rfb_client) {
|
|||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
rfbClient* guac_vnc_get_client(guac_client* client) {
|
rfbClient* guac_vnc_get_client(guac_client* client) {
|
||||||
|
|
||||||
@ -124,9 +127,11 @@ rfbClient* guac_vnc_get_client(guac_client* client) {
|
|||||||
rfb_client->GotFrameBufferUpdate = guac_vnc_update;
|
rfb_client->GotFrameBufferUpdate = guac_vnc_update;
|
||||||
rfb_client->GotCopyRect = guac_vnc_copyrect;
|
rfb_client->GotCopyRect = guac_vnc_copyrect;
|
||||||
|
|
||||||
|
#if LIBVNCSERVER_VERSION_MAJOR >=0 && LIBVNCSERVER_VERSION_MINOR >= 9 && LIBVNCSERVER_VERSION_PATCHLEVEL >= 11
|
||||||
/* TLS Locking and Unlocking */
|
/* TLS Locking and Unlocking */
|
||||||
rfb_client->LockWriteToTLS = guac_vnc_lock_write_to_tls;
|
rfb_client->LockWriteToTLS = guac_vnc_lock_write_to_tls;
|
||||||
rfb_client->UnlockWriteToTLS = guac_vnc_unlock_write_to_tls;
|
rfb_client->UnlockWriteToTLS = guac_vnc_unlock_write_to_tls;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Do not handle clipboard and local cursor if read-only */
|
/* Do not handle clipboard and local cursor if read-only */
|
||||||
if (vnc_settings->read_only == 0) {
|
if (vnc_settings->read_only == 0) {
|
||||||
@ -242,8 +247,10 @@ void* guac_vnc_client_thread(void* data) {
|
|||||||
rfbClientLog = guac_vnc_client_log_info;
|
rfbClientLog = guac_vnc_client_log_info;
|
||||||
rfbClientErr = guac_vnc_client_log_error;
|
rfbClientErr = guac_vnc_client_log_error;
|
||||||
|
|
||||||
|
#if LIBVNCSERVER_VERSION_MAJOR >=0 && LIBVNCSERVER_VERSION_MINOR >= 9 && LIBVNCSERVER_VERSION_PATCHLEVEL >= 11
|
||||||
/* Initialize the write lock */
|
/* Initialize the write lock */
|
||||||
pthread_mutex_init(&(vnc_client->tls_lock), NULL);
|
pthread_mutex_init(&(vnc_client->tls_lock), NULL);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Attempt connection */
|
/* Attempt connection */
|
||||||
rfbClient* rfb_client = guac_vnc_get_client(client);
|
rfbClient* rfb_client = guac_vnc_get_client(client);
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
#include <guacamole/client.h>
|
#include <guacamole/client.h>
|
||||||
#include <guacamole/layer.h>
|
#include <guacamole/layer.h>
|
||||||
#include <rfb/rfbclient.h>
|
#include <rfb/rfbclient.h>
|
||||||
|
#include <rfb/rfbconfig.h>
|
||||||
|
|
||||||
#ifdef ENABLE_PULSE
|
#ifdef ENABLE_PULSE
|
||||||
#include "pulse/pulse.h"
|
#include "pulse/pulse.h"
|
||||||
@ -55,10 +56,12 @@ typedef struct guac_vnc_client {
|
|||||||
*/
|
*/
|
||||||
pthread_t client_thread;
|
pthread_t client_thread;
|
||||||
|
|
||||||
|
#if LIBVNCSERVER_VERSION_MAJOR >=0 && LIBVNCSERVER_VERSION_MINOR >= 9 && LIBVNCSERVER_VERSION_PATCHLEVEL >= 11
|
||||||
/**
|
/**
|
||||||
* The TLS mutex lock for the client.
|
* The TLS mutex lock for the client.
|
||||||
*/
|
*/
|
||||||
pthread_mutex_t tls_lock;
|
pthread_mutex_t tls_lock;
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The underlying VNC client.
|
* The underlying VNC client.
|
||||||
|
Loading…
Reference in New Issue
Block a user