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[] = {
"hostname",
"port",
"server-timeout",
GUAC_RDP_ARGV_DOMAIN,
GUAC_RDP_ARGV_USERNAME,
GUAC_RDP_ARGV_PASSWORD,
@ -159,6 +160,11 @@ enum RDP_ARGS_IDX {
*/
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.
*/
@ -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,
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,
"User resolution is %ix%i at %i DPI",
user->info.optimal_width,
@ -1424,6 +1435,7 @@ void guac_rdp_push_settings(guac_client* client,
/* Connection */
rdp_settings->ServerHostname = guac_strdup(guac_settings->hostname);
rdp_settings->ServerPort = guac_settings->port;
rdp_settings->TcpAckTimeout = guac_settings->server_timeout * 1000;
/* Session */
rdp_settings->ColorDepth = guac_settings->color_depth;

View File

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