GUACAMOLE-337: Limit public libguacd API to simply user handshake handling and SSL/TLS sockets.

This commit is contained in:
Michael Jumper 2017-06-10 19:16:22 -07:00
parent 7f3b985cc6
commit 6c484c1efd
5 changed files with 52 additions and 54 deletions

View File

@ -23,10 +23,12 @@ lib_LTLIBRARIES = libguacd.la
libguacdincdir = $(includedir)/libguacd
libguacdinc_HEADERS = \
libguacd/log.h \
libguacdinc_HEADERS = \
libguacd/user.h
noinst_HEADERS = \
log.h
libguacd_la_SOURCES = \
log.c \
user.c

View File

@ -46,40 +46,6 @@
*/
#define GUACD_CLIENT_MAX_CONNECTIONS 65536
/**
* Parameters required by the user input thread.
*/
typedef struct guacd_user_input_thread_params {
/**
* The parser which will be used throughout the user's session.
*/
guac_parser* parser;
/**
* A reference to the connected user.
*/
guac_user* user;
} guacd_user_input_thread_params;
/**
* Starts the input/output threads of a new user. This function will block
* until the user disconnects. If an error prevents the input/output threads
* from starting, guac_user_stop() will be invoked on the given user.
*
* @param parser
* The guac_parser to use to handle all input from the given user.
*
* @param user
* The user whose associated I/O transfer threads should be started.
*
* @return
* Zero if the I/O threads started successfully and user has disconnected,
* or non-zero if the I/O threads could not be started.
*/
int guacd_user_start(guac_parser* parser, guac_user* user);
/**
* Handles the initial handshake of a user and all subsequent I/O. This
* function blocks until the user disconnects.
@ -95,19 +61,5 @@ int guacd_user_start(guac_parser* parser, guac_user* user);
*/
int guacd_handle_user(guac_user* user);
/**
* The thread which handles all user input, calling event handlers for received
* instructions.
*
* @param data
* A pointer to a guacd_user_input_thread_params structure describing the
* user whose input is being handled and the guac_parser with which to
* handle it.
*
* @return
* Always NULL.
*/
void* guacd_user_input_thread(void* data);
#endif

View File

@ -18,7 +18,7 @@
*/
#include "config.h"
#include "libguacd/log.h"
#include "log.h"
#include <guacamole/client.h>
#include <guacamole/error.h>

View File

@ -19,8 +19,8 @@
#include "config.h"
#include "libguacd/log.h"
#include "libguacd/user.h"
#include "log.h"
#include <guacamole/client.h>
#include <guacamole/error.h>
@ -33,6 +33,23 @@
#include <stdlib.h>
#include <string.h>
/**
* Parameters required by the user input thread.
*/
typedef struct guacd_user_input_thread_params {
/**
* The parser which will be used throughout the user's session.
*/
guac_parser* parser;
/**
* A reference to the connected user.
*/
guac_user* user;
} guacd_user_input_thread_params;
/**
* Copies the given array of mimetypes (strings) into a newly-allocated NULL-
* terminated array of strings. Both the array and the strings within the array
@ -91,7 +108,19 @@ static void guacd_free_mimetypes(char** mimetypes) {
}
void* guacd_user_input_thread(void* data) {
/**
* The thread which handles all user input, calling event handlers for received
* instructions.
*
* @param data
* A pointer to a guacd_user_input_thread_params structure describing the
* user whose input is being handled and the guac_parser with which to
* handle it.
*
* @return
* Always NULL.
*/
static void* guacd_user_input_thread(void* data) {
guacd_user_input_thread_params* params = (guacd_user_input_thread_params*) data;
guac_user* user = params->user;
@ -143,7 +172,22 @@ void* guacd_user_input_thread(void* data) {
}
int guacd_user_start(guac_parser* parser, guac_user* user) {
/**
* Starts the input/output threads of a new user. This function will block
* until the user disconnects. If an error prevents the input/output threads
* from starting, guac_user_stop() will be invoked on the given user.
*
* @param parser
* The guac_parser to use to handle all input from the given user.
*
* @param user
* The user whose associated I/O transfer threads should be started.
*
* @return
* Zero if the I/O threads started successfully and user has disconnected,
* or non-zero if the I/O threads could not be started.
*/
static int guacd_user_start(guac_parser* parser, guac_user* user) {
guacd_user_input_thread_params params = {
.parser = parser,