GUACAMOLE-600: Add support for setting the FreeRDP TcpAckTimeout setting.

This commit is contained in:
Virtually Nick 2023-02-15 14:55:16 -05:00
parent 47b9360d46
commit ca0fc75f9b
2 changed files with 22 additions and 0 deletions

View File

@ -54,6 +54,7 @@ const char fips_nla_mode_warning[] = (
const char* GUAC_RDP_CLIENT_ARGS[] = { const char* GUAC_RDP_CLIENT_ARGS[] = {
"hostname", "hostname",
"port", "port",
"server-timeout",
GUAC_RDP_ARGV_DOMAIN, GUAC_RDP_ARGV_DOMAIN,
GUAC_RDP_ARGV_USERNAME, GUAC_RDP_ARGV_USERNAME,
GUAC_RDP_ARGV_PASSWORD, GUAC_RDP_ARGV_PASSWORD,
@ -159,6 +160,11 @@ enum RDP_ARGS_IDX {
*/ */
IDX_PORT, IDX_PORT,
/**
* The amount of time to wait for the server to respond, in seconds.
*/
IDX_SERVER_TIMEOUT,
/** /**
* The domain of the user logging in. * The domain of the user logging in.
*/ */
@ -780,6 +786,11 @@ guac_rdp_settings* guac_rdp_parse_args(guac_user* user,
guac_user_parse_args_int(user, GUAC_RDP_CLIENT_ARGS, argv, IDX_PORT, guac_user_parse_args_int(user, GUAC_RDP_CLIENT_ARGS, argv, IDX_PORT,
settings->security_mode == GUAC_SECURITY_VMCONNECT ? RDP_DEFAULT_VMCONNECT_PORT : RDP_DEFAULT_PORT); settings->security_mode == GUAC_SECURITY_VMCONNECT ? RDP_DEFAULT_VMCONNECT_PORT : RDP_DEFAULT_PORT);
/* Look for timeout settings and parse or set defaults. */
settings->server_timeout =
guac_user_parse_args_int(user, GUAC_RDP_CLIENT_ARGS, argv,
IDX_SERVER_TIMEOUT, RDP_DEFAULT_SERVER_TIMEOUT);
guac_user_log(user, GUAC_LOG_DEBUG, guac_user_log(user, GUAC_LOG_DEBUG,
"User resolution is %ix%i at %i DPI", "User resolution is %ix%i at %i DPI",
user->info.optimal_width, user->info.optimal_width,
@ -1424,6 +1435,7 @@ void guac_rdp_push_settings(guac_client* client,
/* Connection */ /* Connection */
rdp_settings->ServerHostname = guac_strdup(guac_settings->hostname); rdp_settings->ServerHostname = guac_strdup(guac_settings->hostname);
rdp_settings->ServerPort = guac_settings->port; rdp_settings->ServerPort = guac_settings->port;
rdp_settings->TcpAckTimeout = guac_settings->server_timeout * 1000;
/* Session */ /* Session */
rdp_settings->ColorDepth = guac_settings->color_depth; rdp_settings->ColorDepth = guac_settings->color_depth;

View File

@ -33,6 +33,11 @@
*/ */
#define RDP_CLIENT_HOSTNAME_SIZE 32 #define RDP_CLIENT_HOSTNAME_SIZE 32
/**
* The default server response timeout, in seconds.
*/
#define RDP_DEFAULT_SERVER_TIMEOUT 10
/** /**
* The default RDP port. * The default RDP port.
*/ */
@ -156,6 +161,11 @@ typedef struct guac_rdp_settings {
*/ */
int port; int port;
/**
* The timeout, in seconds, to wait for the remote host to respond.
*/
int server_timeout;
/** /**
* The domain of the user logging in. * The domain of the user logging in.
*/ */