Added configurable TcpKeepAliveDelay setting.

This commit is contained in:
Armin Novak 2019-11-07 13:15:44 +01:00
parent 09dd01a78f
commit 639174e7d3
5 changed files with 18 additions and 7 deletions

View File

@ -882,8 +882,9 @@ typedef struct _RDPDR_PARALLEL RDPDR_PARALLEL;
#define FreeRDP_RDP2TCPArgs (5189)
#define FreeRDP_TcpKeepAlive (5190)
#define FreeRDP_TcpKeepAliveRetries (5191)
#define FreeRDP_TcpKeepAliveInterval (5192)
#define FreeRDP_TcpAckTimeout (5193)
#define FreeRDP_TcpKeepAliveDelay (5192)
#define FreeRDP_TcpKeepAliveInterval (5193)
#define FreeRDP_TcpAckTimeout (5194)
/**
* FreeRDP Settings Data Structure
@ -1526,9 +1527,10 @@ struct rdp_settings
ALIGN64 char* RDP2TCPArgs; /* 5189 */
ALIGN64 BOOL TcpKeepAlive; /* 5190 */
ALIGN64 UINT32 TcpKeepAliveRetries; /* 5191 */
ALIGN64 UINT32 TcpKeepAliveInterval; /* 5192 */
ALIGN64 UINT32 TcpAckTimeout; /* 5193 */
UINT64 padding5312[5312 - 5193]; /* 5193 */
ALIGN64 UINT32 TcpKeepAliveDelay; /* 5192 */
ALIGN64 UINT32 TcpKeepAliveInterval; /* 5193 */
ALIGN64 UINT32 TcpAckTimeout; /* 5194 */
UINT64 padding5312[5312 - 5195]; /* 5195 */
/**
* WARNING: End of ABI stable zone!

View File

@ -1562,6 +1562,9 @@ UINT32 freerdp_settings_get_uint32(const rdpSettings* settings, size_t id)
case FreeRDP_TcpKeepAliveRetries:
return settings->TcpKeepAliveRetries;
case FreeRDP_TcpKeepAliveDelay:
return settings->TcpKeepAliveDelay;
case FreeRDP_TcpKeepAliveInterval:
return settings->TcpKeepAliveInterval;
@ -2009,6 +2012,10 @@ BOOL freerdp_settings_set_uint32(rdpSettings* settings, size_t id, UINT32 val)
settings->TcpKeepAliveRetries = val;
break;
case FreeRDP_TcpKeepAliveDelay:
settings->TcpKeepAliveDelay = val;
break;
case FreeRDP_TcpKeepAliveInterval:
settings->TcpKeepAliveInterval = val;
break;

View File

@ -561,7 +561,8 @@ rdpSettings* freerdp_settings_new(DWORD flags)
settings->TcpKeepAlive = TRUE;
settings->TcpKeepAliveRetries = 3;
settings->TcpKeepAliveInterval = 5;
settings->TcpKeepAliveDelay = 5;
settings->TcpKeepAliveInterval = 2;
settings->TcpAckTimeout = 9000;
if (!settings->ServerMode)

View File

@ -1006,7 +1006,7 @@ static BOOL freerdp_tcp_set_keep_alive_mode(const rdpSettings* settings, int soc
#ifndef _WIN32
#ifdef TCP_KEEPIDLE
optval = keepalive ? freerdp_settings_get_uint32(settings, FreeRDP_TcpKeepAliveInterval) : 0;
optval = keepalive ? freerdp_settings_get_uint32(settings, FreeRDP_TcpKeepAliveDelay) : 0;
optlen = sizeof(optval);
if (setsockopt(sockfd, IPPROTO_TCP, TCP_KEEPIDLE, (void*)&optval, optlen) < 0)

View File

@ -282,6 +282,7 @@ static const size_t uint32_list_indices[] = {
FreeRDP_DynamicChannelCount,
FreeRDP_DynamicChannelArraySize,
FreeRDP_TcpKeepAliveRetries,
FreeRDP_TcpKeepAliveDelay,
FreeRDP_TcpKeepAliveInterval,
FreeRDP_TcpAckTimeout,
};