Merge pull request #5706 from akallabeth/tcp_keepalive

Configurable Tcp keepalive
This commit is contained in:
Martin Fleisz
2019-11-19 10:03:00 +01:00
committed by GitHub
7 changed files with 166 additions and 106 deletions

View File

@@ -880,6 +880,11 @@ typedef struct _RDPDR_PARALLEL RDPDR_PARALLEL;
#define FreeRDP_SupportSSHAgentChannel (5187)
#define FreeRDP_SupportVideoOptimized (5188)
#define FreeRDP_RDP2TCPArgs (5189)
#define FreeRDP_TcpKeepAlive (5190)
#define FreeRDP_TcpKeepAliveRetries (5191)
#define FreeRDP_TcpKeepAliveDelay (5192)
#define FreeRDP_TcpKeepAliveInterval (5193)
#define FreeRDP_TcpAckTimeout (5194)
/**
* FreeRDP Settings Data Structure
@@ -1520,7 +1525,12 @@ struct rdp_settings
ALIGN64 BOOL SupportSSHAgentChannel; /* 5187 */
ALIGN64 BOOL SupportVideoOptimized; /* 5188 */
ALIGN64 char* RDP2TCPArgs; /* 5189 */
UINT64 padding5312[5312 - 5190]; /* 5190 */
ALIGN64 BOOL TcpKeepAlive; /* 5190 */
ALIGN64 UINT32 TcpKeepAliveRetries; /* 5191 */
ALIGN64 UINT32 TcpKeepAliveDelay; /* 5192 */
ALIGN64 UINT32 TcpKeepAliveInterval; /* 5193 */
ALIGN64 UINT32 TcpAckTimeout; /* 5194 */
UINT64 padding5312[5312 - 5195]; /* 5195 */
/**
* WARNING: End of ABI stable zone!
@@ -1603,52 +1613,55 @@ extern "C"
* the functions freerdp_get_param_* and freerdp_set_param_* are deprecated.
* use freerdp_settings_get_* and freerdp_settings_set_* as a replacement!
*/
FREERDP_API WINPR_DEPRECATED(BOOL freerdp_get_param_bool(rdpSettings* settings, int id));
FREERDP_API WINPR_DEPRECATED(BOOL freerdp_get_param_bool(const rdpSettings* settings, int id));
FREERDP_API WINPR_DEPRECATED(int freerdp_set_param_bool(rdpSettings* settings, int id,
BOOL param));
FREERDP_API WINPR_DEPRECATED(int freerdp_get_param_int(rdpSettings* settings, int id));
FREERDP_API WINPR_DEPRECATED(int freerdp_get_param_int(const rdpSettings* settings, int id));
FREERDP_API WINPR_DEPRECATED(int freerdp_set_param_int(rdpSettings* settings, int id,
int param));
FREERDP_API WINPR_DEPRECATED(UINT32 freerdp_get_param_uint32(rdpSettings* settings, int id));
FREERDP_API WINPR_DEPRECATED(UINT32 freerdp_get_param_uint32(const rdpSettings* settings,
int id));
FREERDP_API WINPR_DEPRECATED(int freerdp_set_param_uint32(rdpSettings* settings, int id,
UINT32 param));
FREERDP_API WINPR_DEPRECATED(UINT64 freerdp_get_param_uint64(rdpSettings* settings, int id));
FREERDP_API WINPR_DEPRECATED(UINT64 freerdp_get_param_uint64(const rdpSettings* settings,
int id));
FREERDP_API WINPR_DEPRECATED(int freerdp_set_param_uint64(rdpSettings* settings, int id,
UINT64 param));
FREERDP_API WINPR_DEPRECATED(char* freerdp_get_param_string(rdpSettings* settings, int id));
FREERDP_API WINPR_DEPRECATED(char* freerdp_get_param_string(const rdpSettings* settings,
int id));
FREERDP_API WINPR_DEPRECATED(int freerdp_set_param_string(rdpSettings* settings, int id,
const char* param));
FREERDP_API BOOL freerdp_settings_get_bool(rdpSettings* settings, size_t id);
FREERDP_API BOOL freerdp_settings_get_bool(const rdpSettings* settings, size_t id);
FREERDP_API BOOL freerdp_settings_set_bool(rdpSettings* settings, size_t id, BOOL param);
FREERDP_API INT16 freerdp_settings_get_int16(rdpSettings* settings, size_t id);
FREERDP_API INT16 freerdp_settings_get_int16(const rdpSettings* settings, size_t id);
FREERDP_API BOOL freerdp_settings_set_int16(rdpSettings* settings, size_t id, INT16 param);
FREERDP_API UINT16 freerdp_settings_get_uint16(rdpSettings* settings, size_t id);
FREERDP_API UINT16 freerdp_settings_get_uint16(const rdpSettings* settings, size_t id);
FREERDP_API BOOL freerdp_settings_set_uint16(rdpSettings* settings, size_t id, UINT16 param);
FREERDP_API INT32 freerdp_settings_get_int32(rdpSettings* settings, size_t id);
FREERDP_API INT32 freerdp_settings_get_int32(const rdpSettings* settings, size_t id);
FREERDP_API BOOL freerdp_settings_set_int32(rdpSettings* settings, size_t id, INT32 param);
FREERDP_API UINT32 freerdp_settings_get_uint32(rdpSettings* settings, size_t id);
FREERDP_API UINT32 freerdp_settings_get_uint32(const rdpSettings* settings, size_t id);
FREERDP_API BOOL freerdp_settings_set_uint32(rdpSettings* settings, size_t id, UINT32 param);
FREERDP_API INT64 freerdp_settings_get_int64(rdpSettings* settings, size_t id);
FREERDP_API INT64 freerdp_settings_get_int64(const rdpSettings* settings, size_t id);
FREERDP_API BOOL freerdp_settings_set_int64(rdpSettings* settings, size_t id, INT64 param);
FREERDP_API UINT64 freerdp_settings_get_uint64(rdpSettings* settings, size_t id);
FREERDP_API UINT64 freerdp_settings_get_uint64(const rdpSettings* settings, size_t id);
FREERDP_API BOOL freerdp_settings_set_uint64(rdpSettings* settings, size_t id, UINT64 param);
FREERDP_API const char* freerdp_settings_get_string(rdpSettings* settings, size_t id);
FREERDP_API const char* freerdp_settings_get_string(const rdpSettings* settings, size_t id);
FREERDP_API BOOL freerdp_settings_set_string(rdpSettings* settings, size_t id,
const char* param);
FREERDP_API const void* freerdp_settings_get_pointer(rdpSettings* settings, size_t id);
FREERDP_API const void* freerdp_settings_get_pointer(const rdpSettings* settings, size_t id);
#ifdef __cplusplus
}

View File

@@ -755,7 +755,7 @@ void freerdp_update_gateway_usage_method(rdpSettings* settings, UINT32 GatewayEn
freerdp_set_gateway_usage_method(settings, GatewayUsageMethod);
}
BOOL freerdp_get_param_bool(rdpSettings* settings, int id)
BOOL freerdp_get_param_bool(const rdpSettings* settings, int id)
{
return freerdp_settings_get_bool(settings, (size_t)id);
}
@@ -765,7 +765,7 @@ int freerdp_set_param_bool(rdpSettings* settings, int id, BOOL param)
return freerdp_settings_set_bool(settings, (size_t)id, param) ? 0 : -1;
}
int freerdp_get_param_int(rdpSettings* settings, int id)
int freerdp_get_param_int(const rdpSettings* settings, int id)
{
return freerdp_settings_get_int32(settings, (size_t)id);
}
@@ -775,7 +775,7 @@ int freerdp_set_param_int(rdpSettings* settings, int id, int param)
return freerdp_settings_set_int32(settings, (size_t)id, param) ? 0 : -1;
}
UINT32 freerdp_get_param_uint32(rdpSettings* settings, int id)
UINT32 freerdp_get_param_uint32(const rdpSettings* settings, int id)
{
return freerdp_settings_get_uint32(settings, (size_t)id);
}
@@ -785,7 +785,7 @@ int freerdp_set_param_uint32(rdpSettings* settings, int id, UINT32 param)
return freerdp_settings_set_uint32(settings, (size_t)id, param) ? 0 : -1;
}
UINT64 freerdp_get_param_uint64(rdpSettings* settings, int id)
UINT64 freerdp_get_param_uint64(const rdpSettings* settings, int id)
{
return freerdp_settings_get_uint64(settings, (size_t)id);
}
@@ -795,7 +795,7 @@ int freerdp_set_param_uint64(rdpSettings* settings, int id, UINT64 param)
return freerdp_settings_set_uint64(settings, (size_t)id, param) ? 0 : -1;
}
char* freerdp_get_param_string(rdpSettings* settings, int id)
char* freerdp_get_param_string(const rdpSettings* settings, int id)
{
return (char*)freerdp_settings_get_string(settings, (size_t)id);
}

View File

@@ -5,7 +5,7 @@
#define TAG FREERDP_TAG("common.settings")
BOOL freerdp_settings_get_bool(rdpSettings* settings, size_t id)
BOOL freerdp_settings_get_bool(const rdpSettings* settings, size_t id)
{
if (!settings)
return FALSE;
@@ -495,6 +495,9 @@ BOOL freerdp_settings_get_bool(rdpSettings* settings, size_t id)
case FreeRDP_SupportVideoOptimized:
return settings->SupportVideoOptimized;
case FreeRDP_TcpKeepAlive:
return settings->TcpKeepAlive;
default:
WLog_ERR(TAG, "[%s] Invalid key index %" PRIuz, __FUNCTION__, id);
return FALSE;
@@ -1152,6 +1155,10 @@ BOOL freerdp_settings_set_bool(rdpSettings* settings, size_t id, BOOL val)
settings->SupportVideoOptimized = val;
break;
case FreeRDP_TcpKeepAlive:
settings->TcpKeepAlive = val;
break;
default:
WLog_ERR(TAG, "[%s] Invalid key index %" PRIuz, __FUNCTION__, id);
return FALSE;
@@ -1159,7 +1166,7 @@ BOOL freerdp_settings_set_bool(rdpSettings* settings, size_t id, BOOL val)
return TRUE;
}
UINT16 freerdp_settings_get_uint16(rdpSettings* settings, size_t id)
UINT16 freerdp_settings_get_uint16(const rdpSettings* settings, size_t id)
{
if (!settings)
return FALSE;
@@ -1200,7 +1207,7 @@ BOOL freerdp_settings_set_uint16(rdpSettings* settings, size_t id, UINT16 val)
return TRUE;
}
INT16 freerdp_settings_get_int16(rdpSettings* settings, size_t id)
INT16 freerdp_settings_get_int16(const rdpSettings* settings, size_t id)
{
if (!settings)
return FALSE;
@@ -1227,7 +1234,7 @@ BOOL freerdp_settings_set_int16(rdpSettings* settings, size_t id, INT16 val)
return TRUE;
}
UINT32 freerdp_settings_get_uint32(rdpSettings* settings, size_t id)
UINT32 freerdp_settings_get_uint32(const rdpSettings* settings, size_t id)
{
if (!settings)
return FALSE;
@@ -1552,6 +1559,18 @@ UINT32 freerdp_settings_get_uint32(rdpSettings* settings, size_t id)
case FreeRDP_DynamicChannelArraySize:
return settings->DynamicChannelArraySize;
case FreeRDP_TcpKeepAliveRetries:
return settings->TcpKeepAliveRetries;
case FreeRDP_TcpKeepAliveDelay:
return settings->TcpKeepAliveDelay;
case FreeRDP_TcpKeepAliveInterval:
return settings->TcpKeepAliveInterval;
case FreeRDP_TcpAckTimeout:
return settings->TcpAckTimeout;
default:
WLog_ERR(TAG, "[%s] Invalid key index %" PRIuz, __FUNCTION__, id);
return FALSE;
@@ -1989,6 +2008,22 @@ BOOL freerdp_settings_set_uint32(rdpSettings* settings, size_t id, UINT32 val)
settings->DynamicChannelArraySize = val;
break;
case FreeRDP_TcpKeepAliveRetries:
settings->TcpKeepAliveRetries = val;
break;
case FreeRDP_TcpKeepAliveDelay:
settings->TcpKeepAliveDelay = val;
break;
case FreeRDP_TcpKeepAliveInterval:
settings->TcpKeepAliveInterval = val;
break;
case FreeRDP_TcpAckTimeout:
settings->TcpAckTimeout = val;
break;
default:
WLog_ERR(TAG, "[%s] Invalid key index %" PRIuz, __FUNCTION__, id);
return FALSE;
@@ -1996,7 +2031,7 @@ BOOL freerdp_settings_set_uint32(rdpSettings* settings, size_t id, UINT32 val)
return TRUE;
}
INT32 freerdp_settings_get_int32(rdpSettings* settings, size_t id)
INT32 freerdp_settings_get_int32(const rdpSettings* settings, size_t id)
{
if (!settings)
return FALSE;
@@ -2037,7 +2072,7 @@ BOOL freerdp_settings_set_int32(rdpSettings* settings, size_t id, INT32 val)
return TRUE;
}
UINT64 freerdp_settings_get_uint64(rdpSettings* settings, size_t id)
UINT64 freerdp_settings_get_uint64(const rdpSettings* settings, size_t id)
{
if (!settings)
return FALSE;
@@ -2071,7 +2106,7 @@ BOOL freerdp_settings_set_uint64(rdpSettings* settings, size_t id, UINT64 val)
return TRUE;
}
INT64 freerdp_settings_get_int64(rdpSettings* settings, size_t id)
INT64 freerdp_settings_get_int64(const rdpSettings* settings, size_t id)
{
if (!settings)
return FALSE;
@@ -2098,7 +2133,7 @@ BOOL freerdp_settings_set_int64(rdpSettings* settings, size_t id, INT64 val)
return TRUE;
}
const char* freerdp_settings_get_string(rdpSettings* settings, size_t id)
const char* freerdp_settings_get_string(const rdpSettings* settings, size_t id)
{
if (!settings)
return FALSE;
@@ -2645,7 +2680,7 @@ BOOL freerdp_settings_set_string(rdpSettings* settings, size_t id, const char* v
return TRUE;
}
const void* freerdp_settings_get_pointer(rdpSettings* settings, size_t id)
const void* freerdp_settings_get_pointer(const rdpSettings* settings, size_t id)
{
if (!settings)
return FALSE;
@@ -2655,54 +2690,6 @@ const void* freerdp_settings_get_pointer(rdpSettings* settings, size_t id)
case FreeRDP_instance:
return settings->instance;
case FreeRDP_RdpServerCertificate:
return settings->RdpServerCertificate;
case FreeRDP_ServerAutoReconnectCookie:
return settings->ServerAutoReconnectCookie;
case FreeRDP_BitmapCacheV2CellInfo:
return settings->BitmapCacheV2CellInfo;
case FreeRDP_RdpServerRsaKey:
return settings->RdpServerRsaKey;
case FreeRDP_MonitorIds:
return settings->MonitorIds;
case FreeRDP_TargetNetPorts:
return settings->TargetNetPorts;
case FreeRDP_MonitorDefArray:
return settings->MonitorDefArray;
case FreeRDP_ChannelDefArray:
return settings->ChannelDefArray;
case FreeRDP_ClientAutoReconnectCookie:
return settings->ClientAutoReconnectCookie;
case FreeRDP_TargetNetAddresses:
return settings->TargetNetAddresses;
case FreeRDP_StaticChannelArray:
return settings->StaticChannelArray;
case FreeRDP_DynamicChannelArray:
return settings->DynamicChannelArray;
case FreeRDP_DeviceArray:
return settings->DeviceArray;
case FreeRDP_GlyphCache:
return settings->GlyphCache;
case FreeRDP_FragCache:
return settings->FragCache;
case FreeRDP_ClientTimeZone:
return settings->ClientTimeZone;
case FreeRDP_ServerRandom:
return settings->ServerRandom;
@@ -2730,6 +2717,54 @@ const void* freerdp_settings_get_pointer(rdpSettings* settings, size_t id)
case FreeRDP_OrderSupport:
return settings->OrderSupport;
case FreeRDP_ChannelDefArray:
return settings->ChannelDefArray;
case FreeRDP_MonitorDefArray:
return settings->MonitorDefArray;
case FreeRDP_MonitorIds:
return settings->MonitorIds;
case FreeRDP_TargetNetPorts:
return settings->TargetNetPorts;
case FreeRDP_ClientAutoReconnectCookie:
return settings->ClientAutoReconnectCookie;
case FreeRDP_ServerAutoReconnectCookie:
return settings->ServerAutoReconnectCookie;
case FreeRDP_ClientTimeZone:
return settings->ClientTimeZone;
case FreeRDP_TargetNetAddresses:
return settings->TargetNetAddresses;
case FreeRDP_RdpServerRsaKey:
return settings->RdpServerRsaKey;
case FreeRDP_RdpServerCertificate:
return settings->RdpServerCertificate;
case FreeRDP_BitmapCacheV2CellInfo:
return settings->BitmapCacheV2CellInfo;
case FreeRDP_GlyphCache:
return settings->GlyphCache;
case FreeRDP_FragCache:
return settings->FragCache;
case FreeRDP_DeviceArray:
return settings->DeviceArray;
case FreeRDP_StaticChannelArray:
return settings->StaticChannelArray;
case FreeRDP_DynamicChannelArray:
return settings->DynamicChannelArray;
default:
WLog_ERR(TAG, "[%s] Invalid key index %" PRIuz, __FUNCTION__, id);
return FALSE;

View File

@@ -559,6 +559,12 @@ rdpSettings* freerdp_settings_new(DWORD flags)
if (!settings->DynamicChannelArray)
goto out_fail;
settings->TcpKeepAlive = TRUE;
settings->TcpKeepAliveRetries = 3;
settings->TcpKeepAliveDelay = 5;
settings->TcpKeepAliveInterval = 2;
settings->TcpAckTimeout = 9000;
if (!settings->ServerMode)
{
settings->RedirectClipboard = TRUE;

View File

@@ -100,8 +100,8 @@ typedef struct _WINPR_BIO_SIMPLE_SOCKET WINPR_BIO_SIMPLE_SOCKET;
static int transport_bio_simple_init(BIO* bio, SOCKET socket, int shutdown);
static int transport_bio_simple_uninit(BIO* bio);
long transport_bio_simple_callback(BIO* bio, int mode, const char* argp, int argi, long argl,
long ret)
static long transport_bio_simple_callback(BIO* bio, int mode, const char* argp, int argi, long argl,
long ret)
{
return 1;
}
@@ -459,8 +459,8 @@ struct _WINPR_BIO_BUFFERED_SOCKET
};
typedef struct _WINPR_BIO_BUFFERED_SOCKET WINPR_BIO_BUFFERED_SOCKET;
long transport_bio_buffered_callback(BIO* bio, int mode, const char* argp, int argi, long argl,
long ret)
static long transport_bio_buffered_callback(BIO* bio, int mode, const char* argp, int argi,
long argl, long ret)
{
return 1;
}
@@ -991,12 +991,12 @@ static int freerdp_tcp_connect_multi(rdpContext* context, char** hostnames, UINT
return sockfd;
}
BOOL freerdp_tcp_set_keep_alive_mode(int sockfd)
static BOOL freerdp_tcp_set_keep_alive_mode(const rdpSettings* settings, int sockfd)
{
#ifndef _WIN32
const BOOL keepalive = (freerdp_settings_get_bool(settings, FreeRDP_TcpKeepAlive));
UINT32 optval;
socklen_t optlen;
optval = 1;
optval = keepalive ? 1 : 0;
optlen = sizeof(optval);
if (setsockopt(sockfd, SOL_SOCKET, SO_KEEPALIVE, (void*)&optval, optlen) < 0)
@@ -1004,8 +1004,9 @@ BOOL freerdp_tcp_set_keep_alive_mode(int sockfd)
WLog_WARN(TAG, "setsockopt() SOL_SOCKET, SO_KEEPALIVE");
}
#ifndef _WIN32
#ifdef TCP_KEEPIDLE
optval = 5;
optval = keepalive ? freerdp_settings_get_uint32(settings, FreeRDP_TcpKeepAliveDelay) : 0;
optlen = sizeof(optval);
if (setsockopt(sockfd, IPPROTO_TCP, TCP_KEEPIDLE, (void*)&optval, optlen) < 0)
@@ -1019,7 +1020,7 @@ BOOL freerdp_tcp_set_keep_alive_mode(int sockfd)
#define SOL_TCP 6
#endif
#ifdef TCP_KEEPCNT
optval = 3;
optval = keepalive ? freerdp_settings_get_uint32(settings, FreeRDP_TcpKeepAliveRetries) : 0;
optlen = sizeof(optval);
if (setsockopt(sockfd, SOL_TCP, TCP_KEEPCNT, (void*)&optval, optlen) < 0)
@@ -1029,7 +1030,7 @@ BOOL freerdp_tcp_set_keep_alive_mode(int sockfd)
#endif
#ifdef TCP_KEEPINTVL
optval = 2;
optval = keepalive ? freerdp_settings_get_uint32(settings, FreeRDP_TcpKeepAliveInterval) : 0;
optlen = sizeof(optval);
if (setsockopt(sockfd, SOL_TCP, TCP_KEEPINTVL, (void*)&optval, optlen) < 0)
@@ -1050,7 +1051,7 @@ BOOL freerdp_tcp_set_keep_alive_mode(int sockfd)
#endif
#ifdef TCP_USER_TIMEOUT
optval = 9000;
optval = freerdp_settings_get_uint32(settings, FreeRDP_TcpAckTimeout);
optlen = sizeof(optval);
if (setsockopt(sockfd, SOL_TCP, TCP_USER_TIMEOUT, (void*)&optval, optlen) < 0)
@@ -1231,7 +1232,7 @@ int freerdp_tcp_connect(rdpContext* context, rdpSettings* settings, const char*
if (!ipcSocket && !useExternalDefinedSocket)
{
if (!freerdp_tcp_set_keep_alive_mode(sockfd))
if (!freerdp_tcp_set_keep_alive_mode(settings, sockfd))
{
close(sockfd);

View File

@@ -164,6 +164,7 @@ static const size_t bool_list_indices[] = {
FreeRDP_SupportGeometryTracking,
FreeRDP_SupportSSHAgentChannel,
FreeRDP_SupportVideoOptimized,
FreeRDP_TcpKeepAlive,
};
#define have_uint16_list_indices
@@ -280,6 +281,10 @@ static const size_t uint32_list_indices[] = {
FreeRDP_StaticChannelArraySize,
FreeRDP_DynamicChannelCount,
FreeRDP_DynamicChannelArraySize,
FreeRDP_TcpKeepAliveRetries,
FreeRDP_TcpKeepAliveDelay,
FreeRDP_TcpKeepAliveInterval,
FreeRDP_TcpAckTimeout,
};
#define have_int32_list_indices
@@ -364,18 +369,7 @@ static const size_t string_list_indices[] = {
#define have_pointer_list_indices
static const size_t pointer_list_indices[] = {
FreeRDP_StaticChannelArray,
FreeRDP_DynamicChannelArray,
FreeRDP_instance,
FreeRDP_RdpServerCertificate,
FreeRDP_MonitorIds,
FreeRDP_TargetNetPorts,
FreeRDP_DeviceArray,
FreeRDP_ClientAutoReconnectCookie,
FreeRDP_TargetNetAddresses,
FreeRDP_MonitorDefArray,
FreeRDP_BitmapCacheV2CellInfo,
FreeRDP_ServerAutoReconnectCookie,
FreeRDP_ServerRandom,
FreeRDP_ServerCertificate,
FreeRDP_ClientRandom,
@@ -385,11 +379,22 @@ static const size_t pointer_list_indices[] = {
FreeRDP_Password51,
FreeRDP_ReceivedCapabilities,
FreeRDP_OrderSupport,
FreeRDP_ChannelDefArray,
FreeRDP_MonitorDefArray,
FreeRDP_MonitorIds,
FreeRDP_TargetNetPorts,
FreeRDP_ClientAutoReconnectCookie,
FreeRDP_ServerAutoReconnectCookie,
FreeRDP_ClientTimeZone,
FreeRDP_TargetNetAddresses,
FreeRDP_RdpServerRsaKey,
FreeRDP_RdpServerCertificate,
FreeRDP_BitmapCacheV2CellInfo,
FreeRDP_GlyphCache,
FreeRDP_FragCache,
FreeRDP_ClientTimeZone,
FreeRDP_ChannelDefArray,
FreeRDP_DeviceArray,
FreeRDP_StaticChannelArray,
FreeRDP_DynamicChannelArray,
};
#endif /* TEST_SETTINGS_PROPERTY_LISTS */

View File

@@ -5,11 +5,11 @@ import sys
def get_values(entry_dict, entry_type):
values = []
if '*' == entry_type:
for key in entry_dict.keys():
for key in list(entry_dict.keys()):
if entry_type in key:
values += entry_dict[key]
entry_dict.pop(key, None)
elif entry_type in entry_dict:
elif entry_type in dict(entry_dict):
values = entry_dict[entry_type]
entry_dict.pop(entry_type, None)
return values
@@ -43,7 +43,7 @@ def write_getter(f, entry_dict, entry_type, entry_name):
f.write('const ' + entry_type)
else:
f.write(entry_type)
f.write(' freerdp_settings_get_' + entry_name.lower() + '(rdpSettings* settings, size_t id)\n')
f.write(' freerdp_settings_get_' + entry_name.lower() + '(const rdpSettings* settings, size_t id)\n')
f.write('{\n')
f.write('\tif (!settings)\n')
f.write('\t\treturn FALSE;\n\n')
@@ -103,7 +103,7 @@ print('begin parsing settings header')
try:
type_list = dict()
with open(name + "/../include/freerdp/settings.h", "rb") as f:
with open(name + "/../include/freerdp/settings.h", "r") as f:
lines = f.readlines()
started = False
for line in lines: