[core,gcc] use mcs_get_settings, make const correct
Use a common helper function to get (const correct) settings from rdpMcs
This commit is contained in:
parent
917e392f1e
commit
8200536285
@ -42,11 +42,11 @@ static BOOL gcc_write_user_data_header(wStream* s, UINT16 type, UINT16 length);
|
|||||||
|
|
||||||
static BOOL gcc_write_client_core_data(wStream* s, const rdpMcs* mcs);
|
static BOOL gcc_write_client_core_data(wStream* s, const rdpMcs* mcs);
|
||||||
static BOOL gcc_read_server_core_data(wStream* s, rdpMcs* mcs);
|
static BOOL gcc_read_server_core_data(wStream* s, rdpMcs* mcs);
|
||||||
static BOOL gcc_write_server_core_data(wStream* s, const rdpMcs* mcs);
|
static BOOL gcc_write_server_core_data(wStream* s, rdpMcs* mcs);
|
||||||
static BOOL gcc_read_client_security_data(wStream* s, rdpMcs* mcs, UINT16 blockLength);
|
static BOOL gcc_read_client_security_data(wStream* s, rdpMcs* mcs, UINT16 blockLength);
|
||||||
static BOOL gcc_write_client_security_data(wStream* s, const rdpMcs* mcs);
|
static BOOL gcc_write_client_security_data(wStream* s, const rdpMcs* mcs);
|
||||||
static BOOL gcc_read_server_security_data(wStream* s, rdpMcs* mcs);
|
static BOOL gcc_read_server_security_data(wStream* s, rdpMcs* mcs);
|
||||||
static BOOL gcc_write_server_security_data(wStream* s, const rdpMcs* mcs);
|
static BOOL gcc_write_server_security_data(wStream* s, rdpMcs* mcs);
|
||||||
static BOOL gcc_read_client_network_data(wStream* s, rdpMcs* mcs, UINT16 blockLength);
|
static BOOL gcc_read_client_network_data(wStream* s, rdpMcs* mcs, UINT16 blockLength);
|
||||||
static BOOL gcc_write_client_network_data(wStream* s, const rdpMcs* mcs);
|
static BOOL gcc_write_client_network_data(wStream* s, const rdpMcs* mcs);
|
||||||
static BOOL gcc_read_server_network_data(wStream* s, rdpMcs* mcs);
|
static BOOL gcc_read_server_network_data(wStream* s, rdpMcs* mcs);
|
||||||
@ -66,6 +66,26 @@ static BOOL gcc_write_client_multitransport_channel_data(wStream* s, const rdpMc
|
|||||||
static BOOL gcc_read_server_multitransport_channel_data(wStream* s, rdpMcs* mcs);
|
static BOOL gcc_read_server_multitransport_channel_data(wStream* s, rdpMcs* mcs);
|
||||||
static BOOL gcc_write_server_multitransport_channel_data(wStream* s, const rdpMcs* mcs);
|
static BOOL gcc_write_server_multitransport_channel_data(wStream* s, const rdpMcs* mcs);
|
||||||
|
|
||||||
|
static rdpSettings* mcs_get_settings(rdpMcs* mcs)
|
||||||
|
{
|
||||||
|
WINPR_ASSERT(mcs);
|
||||||
|
|
||||||
|
rdpContext* context = transport_get_context(mcs->transport);
|
||||||
|
WINPR_ASSERT(context);
|
||||||
|
|
||||||
|
return context->settings;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const rdpSettings* mcs_get_const_settings(const rdpMcs* mcs)
|
||||||
|
{
|
||||||
|
WINPR_ASSERT(mcs);
|
||||||
|
|
||||||
|
const rdpContext* context = transport_get_context(mcs->transport);
|
||||||
|
WINPR_ASSERT(context);
|
||||||
|
|
||||||
|
return context->settings;
|
||||||
|
}
|
||||||
|
|
||||||
static void append(char* buffer, size_t size, const char* what)
|
static void append(char* buffer, size_t size, const char* what)
|
||||||
{
|
{
|
||||||
winpr_str_append(what, buffer, size, "|");
|
winpr_str_append(what, buffer, size, "|");
|
||||||
@ -259,6 +279,8 @@ BOOL gcc_read_conference_create_request(wStream* s, rdpMcs* mcs)
|
|||||||
BYTE number;
|
BYTE number;
|
||||||
BYTE selection;
|
BYTE selection;
|
||||||
|
|
||||||
|
WINPR_ASSERT(s);
|
||||||
|
WINPR_ASSERT(mcs);
|
||||||
/* ConnectData */
|
/* ConnectData */
|
||||||
if (!per_read_choice(s, &choice))
|
if (!per_read_choice(s, &choice))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -319,6 +341,8 @@ BOOL gcc_read_conference_create_request(wStream* s, rdpMcs* mcs)
|
|||||||
|
|
||||||
BOOL gcc_write_conference_create_request(wStream* s, wStream* userData)
|
BOOL gcc_write_conference_create_request(wStream* s, wStream* userData)
|
||||||
{
|
{
|
||||||
|
WINPR_ASSERT(s);
|
||||||
|
WINPR_ASSERT(userData);
|
||||||
/* ConnectData */
|
/* ConnectData */
|
||||||
if (!per_write_choice(s, 0)) /* From Key select object (0) of type OBJECT_IDENTIFIER */
|
if (!per_write_choice(s, 0)) /* From Key select object (0) of type OBJECT_IDENTIFIER */
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -360,7 +384,8 @@ BOOL gcc_read_conference_create_response(wStream* s, rdpMcs* mcs)
|
|||||||
BYTE result;
|
BYTE result;
|
||||||
BYTE choice;
|
BYTE choice;
|
||||||
BYTE number;
|
BYTE number;
|
||||||
|
WINPR_ASSERT(s);
|
||||||
|
WINPR_ASSERT(mcs);
|
||||||
/* ConnectData */
|
/* ConnectData */
|
||||||
if (!per_read_choice(s, &choice) || !per_read_object_identifier(s, t124_02_98_oid))
|
if (!per_read_choice(s, &choice) || !per_read_object_identifier(s, t124_02_98_oid))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -413,6 +438,8 @@ BOOL gcc_read_conference_create_response(wStream* s, rdpMcs* mcs)
|
|||||||
|
|
||||||
BOOL gcc_write_conference_create_response(wStream* s, wStream* userData)
|
BOOL gcc_write_conference_create_response(wStream* s, wStream* userData)
|
||||||
{
|
{
|
||||||
|
WINPR_ASSERT(s);
|
||||||
|
WINPR_ASSERT(userData);
|
||||||
/* ConnectData */
|
/* ConnectData */
|
||||||
if (!per_write_choice(s, 0))
|
if (!per_write_choice(s, 0))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -451,6 +478,8 @@ BOOL gcc_write_conference_create_response(wStream* s, wStream* userData)
|
|||||||
|
|
||||||
BOOL gcc_read_client_data_blocks(wStream* s, rdpMcs* mcs, UINT16 length)
|
BOOL gcc_read_client_data_blocks(wStream* s, rdpMcs* mcs, UINT16 length)
|
||||||
{
|
{
|
||||||
|
WINPR_ASSERT(s);
|
||||||
|
WINPR_ASSERT(mcs);
|
||||||
while (length > 0)
|
while (length > 0)
|
||||||
{
|
{
|
||||||
UINT16 type;
|
UINT16 type;
|
||||||
@ -540,16 +569,9 @@ BOOL gcc_read_client_data_blocks(wStream* s, rdpMcs* mcs, UINT16 length)
|
|||||||
|
|
||||||
BOOL gcc_write_client_data_blocks(wStream* s, const rdpMcs* mcs)
|
BOOL gcc_write_client_data_blocks(wStream* s, const rdpMcs* mcs)
|
||||||
{
|
{
|
||||||
rdpContext* context;
|
const rdpSettings* settings = mcs_get_const_settings(mcs);
|
||||||
rdpSettings* settings;
|
|
||||||
|
|
||||||
WINPR_ASSERT(s);
|
WINPR_ASSERT(s);
|
||||||
WINPR_ASSERT(mcs);
|
|
||||||
|
|
||||||
context = transport_get_context(mcs->transport);
|
|
||||||
WINPR_ASSERT(context);
|
|
||||||
|
|
||||||
settings = context->settings;
|
|
||||||
WINPR_ASSERT(settings);
|
WINPR_ASSERT(settings);
|
||||||
|
|
||||||
if (!gcc_write_client_core_data(s, mcs) || !gcc_write_client_cluster_data(s, mcs) ||
|
if (!gcc_write_client_core_data(s, mcs) || !gcc_write_client_cluster_data(s, mcs) ||
|
||||||
@ -650,6 +672,9 @@ BOOL gcc_read_server_data_blocks(wStream* s, rdpMcs* mcs, UINT16 length)
|
|||||||
UINT16 blockLength;
|
UINT16 blockLength;
|
||||||
BYTE* holdp;
|
BYTE* holdp;
|
||||||
|
|
||||||
|
WINPR_ASSERT(s);
|
||||||
|
WINPR_ASSERT(mcs);
|
||||||
|
|
||||||
while (offset < length)
|
while (offset < length)
|
||||||
{
|
{
|
||||||
char buffer[64] = { 0 };
|
char buffer[64] = { 0 };
|
||||||
@ -740,8 +765,10 @@ BOOL gcc_read_server_data_blocks(wStream* s, rdpMcs* mcs, UINT16 length)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL gcc_write_server_data_blocks(wStream* s, const rdpMcs* mcs)
|
BOOL gcc_write_server_data_blocks(wStream* s, rdpMcs* mcs)
|
||||||
{
|
{
|
||||||
|
WINPR_ASSERT(s);
|
||||||
|
WINPR_ASSERT(mcs);
|
||||||
return gcc_write_server_core_data(s, mcs) && /* serverCoreData */
|
return gcc_write_server_core_data(s, mcs) && /* serverCoreData */
|
||||||
gcc_write_server_network_data(s, mcs) && /* serverNetworkData */
|
gcc_write_server_network_data(s, mcs) && /* serverNetworkData */
|
||||||
gcc_write_server_security_data(s, mcs) && /* serverSecurityData */
|
gcc_write_server_security_data(s, mcs) && /* serverSecurityData */
|
||||||
@ -753,6 +780,7 @@ BOOL gcc_write_server_data_blocks(wStream* s, const rdpMcs* mcs)
|
|||||||
|
|
||||||
BOOL gcc_read_user_data_header(wStream* s, UINT16* type, UINT16* length)
|
BOOL gcc_read_user_data_header(wStream* s, UINT16* type, UINT16* length)
|
||||||
{
|
{
|
||||||
|
WINPR_ASSERT(s);
|
||||||
if (!Stream_CheckAndLogRequiredLength(TAG, s, 4))
|
if (!Stream_CheckAndLogRequiredLength(TAG, s, 4))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
@ -775,6 +803,8 @@ BOOL gcc_read_user_data_header(wStream* s, UINT16* type, UINT16* length)
|
|||||||
|
|
||||||
BOOL gcc_write_user_data_header(wStream* s, UINT16 type, UINT16 length)
|
BOOL gcc_write_user_data_header(wStream* s, UINT16 type, UINT16 length)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
WINPR_ASSERT(s);
|
||||||
if (!Stream_EnsureRemainingCapacity(s, 4 + length))
|
if (!Stream_EnsureRemainingCapacity(s, 4 + length))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
Stream_Write_UINT16(s, type); /* type */
|
Stream_Write_UINT16(s, type); /* type */
|
||||||
@ -886,16 +916,9 @@ BOOL gcc_read_client_core_data(wStream* s, rdpMcs* mcs, UINT16 blockLength)
|
|||||||
UINT16 supportedColorDepths = 0;
|
UINT16 supportedColorDepths = 0;
|
||||||
UINT32 serverSelectedProtocol = 0;
|
UINT32 serverSelectedProtocol = 0;
|
||||||
UINT16 earlyCapabilityFlags = 0;
|
UINT16 earlyCapabilityFlags = 0;
|
||||||
rdpContext* context;
|
rdpSettings* settings = mcs_get_settings(mcs);
|
||||||
rdpSettings* settings;
|
|
||||||
|
|
||||||
WINPR_ASSERT(s);
|
WINPR_ASSERT(s);
|
||||||
WINPR_ASSERT(mcs);
|
|
||||||
|
|
||||||
context = transport_get_context(mcs->transport);
|
|
||||||
WINPR_ASSERT(context);
|
|
||||||
|
|
||||||
settings = context->settings;
|
|
||||||
WINPR_ASSERT(settings);
|
WINPR_ASSERT(settings);
|
||||||
|
|
||||||
/* Length of all required fields, until imeFileName */
|
/* Length of all required fields, until imeFileName */
|
||||||
@ -1129,16 +1152,9 @@ BOOL gcc_write_client_core_data(wStream* s, const rdpMcs* mcs)
|
|||||||
UINT16 earlyCapabilityFlags;
|
UINT16 earlyCapabilityFlags;
|
||||||
WCHAR* clientDigProductId = NULL;
|
WCHAR* clientDigProductId = NULL;
|
||||||
size_t clientDigProductIdLength;
|
size_t clientDigProductIdLength;
|
||||||
rdpContext* context;
|
const rdpSettings* settings = mcs_get_const_settings(mcs);
|
||||||
rdpSettings* settings;
|
|
||||||
|
|
||||||
WINPR_ASSERT(s);
|
WINPR_ASSERT(s);
|
||||||
WINPR_ASSERT(mcs);
|
|
||||||
|
|
||||||
context = transport_get_context(mcs->transport);
|
|
||||||
WINPR_ASSERT(context);
|
|
||||||
|
|
||||||
settings = context->settings;
|
|
||||||
WINPR_ASSERT(settings);
|
WINPR_ASSERT(settings);
|
||||||
|
|
||||||
if (!gcc_write_user_data_header(s, CS_CORE, 234))
|
if (!gcc_write_user_data_header(s, CS_CORE, 234))
|
||||||
@ -1223,16 +1239,9 @@ BOOL gcc_write_client_core_data(wStream* s, const rdpMcs* mcs)
|
|||||||
BOOL gcc_read_server_core_data(wStream* s, rdpMcs* mcs)
|
BOOL gcc_read_server_core_data(wStream* s, rdpMcs* mcs)
|
||||||
{
|
{
|
||||||
UINT32 serverVersion;
|
UINT32 serverVersion;
|
||||||
rdpContext* context;
|
rdpSettings* settings = mcs_get_settings(mcs);
|
||||||
rdpSettings* settings;
|
|
||||||
|
|
||||||
WINPR_ASSERT(s);
|
WINPR_ASSERT(s);
|
||||||
WINPR_ASSERT(mcs);
|
|
||||||
|
|
||||||
context = transport_get_context(mcs->transport);
|
|
||||||
WINPR_ASSERT(context);
|
|
||||||
|
|
||||||
settings = context->settings;
|
|
||||||
WINPR_ASSERT(settings);
|
WINPR_ASSERT(settings);
|
||||||
|
|
||||||
if (!Stream_CheckAndLogRequiredLength(TAG, s, 4))
|
if (!Stream_CheckAndLogRequiredLength(TAG, s, 4))
|
||||||
@ -1259,19 +1268,15 @@ BOOL gcc_read_server_core_data(wStream* s, rdpMcs* mcs)
|
|||||||
settings->ConnectionType);
|
settings->ConnectionType);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL gcc_write_server_core_data(wStream* s, const rdpMcs* mcs)
|
/* TODO: This function modifies rdpMcs
|
||||||
|
* TODO: Split this out of this function
|
||||||
|
*/
|
||||||
|
BOOL gcc_write_server_core_data(wStream* s, rdpMcs* mcs)
|
||||||
{
|
{
|
||||||
UINT32 earlyCapabilityFlags;
|
UINT32 earlyCapabilityFlags;
|
||||||
rdpContext* context;
|
rdpSettings* settings = mcs_get_settings(mcs);
|
||||||
rdpSettings* settings;
|
|
||||||
|
|
||||||
WINPR_ASSERT(s);
|
WINPR_ASSERT(s);
|
||||||
WINPR_ASSERT(mcs);
|
|
||||||
|
|
||||||
context = transport_get_context(mcs->transport);
|
|
||||||
WINPR_ASSERT(context);
|
|
||||||
|
|
||||||
settings = context->settings;
|
|
||||||
WINPR_ASSERT(settings);
|
WINPR_ASSERT(settings);
|
||||||
|
|
||||||
if (!gcc_write_user_data_header(s, SC_CORE, 16))
|
if (!gcc_write_user_data_header(s, SC_CORE, 16))
|
||||||
@ -1295,16 +1300,9 @@ BOOL gcc_write_server_core_data(wStream* s, const rdpMcs* mcs)
|
|||||||
|
|
||||||
BOOL gcc_read_client_security_data(wStream* s, rdpMcs* mcs, UINT16 blockLength)
|
BOOL gcc_read_client_security_data(wStream* s, rdpMcs* mcs, UINT16 blockLength)
|
||||||
{
|
{
|
||||||
rdpContext* context;
|
rdpSettings* settings = mcs_get_settings(mcs);
|
||||||
rdpSettings* settings;
|
|
||||||
|
|
||||||
WINPR_ASSERT(s);
|
WINPR_ASSERT(s);
|
||||||
WINPR_ASSERT(mcs);
|
|
||||||
|
|
||||||
context = transport_get_context(mcs->transport);
|
|
||||||
WINPR_ASSERT(context);
|
|
||||||
|
|
||||||
settings = context->settings;
|
|
||||||
WINPR_ASSERT(settings);
|
WINPR_ASSERT(settings);
|
||||||
|
|
||||||
if (blockLength < 8)
|
if (blockLength < 8)
|
||||||
@ -1336,16 +1334,9 @@ BOOL gcc_read_client_security_data(wStream* s, rdpMcs* mcs, UINT16 blockLength)
|
|||||||
|
|
||||||
BOOL gcc_write_client_security_data(wStream* s, const rdpMcs* mcs)
|
BOOL gcc_write_client_security_data(wStream* s, const rdpMcs* mcs)
|
||||||
{
|
{
|
||||||
rdpContext* context;
|
const rdpSettings* settings = mcs_get_const_settings(mcs);
|
||||||
rdpSettings* settings;
|
|
||||||
|
|
||||||
WINPR_ASSERT(s);
|
WINPR_ASSERT(s);
|
||||||
WINPR_ASSERT(mcs);
|
|
||||||
|
|
||||||
context = transport_get_context(mcs->transport);
|
|
||||||
WINPR_ASSERT(context);
|
|
||||||
|
|
||||||
settings = context->settings;
|
|
||||||
WINPR_ASSERT(settings);
|
WINPR_ASSERT(settings);
|
||||||
|
|
||||||
if (!gcc_write_user_data_header(s, CS_SECURITY, 12))
|
if (!gcc_write_user_data_header(s, CS_SECURITY, 12))
|
||||||
@ -1371,16 +1362,9 @@ BOOL gcc_read_server_security_data(wStream* s, rdpMcs* mcs)
|
|||||||
UINT32 length;
|
UINT32 length;
|
||||||
BOOL validCryptoConfig = FALSE;
|
BOOL validCryptoConfig = FALSE;
|
||||||
UINT32 serverEncryptionMethod;
|
UINT32 serverEncryptionMethod;
|
||||||
rdpContext* context;
|
rdpSettings* settings = mcs_get_settings(mcs);
|
||||||
rdpSettings* settings;
|
|
||||||
|
|
||||||
WINPR_ASSERT(s);
|
WINPR_ASSERT(s);
|
||||||
WINPR_ASSERT(mcs);
|
|
||||||
|
|
||||||
context = transport_get_context(mcs->transport);
|
|
||||||
WINPR_ASSERT(context);
|
|
||||||
|
|
||||||
settings = context->settings;
|
|
||||||
WINPR_ASSERT(settings);
|
WINPR_ASSERT(settings);
|
||||||
|
|
||||||
if (!Stream_CheckAndLogRequiredLength(TAG, s, 8))
|
if (!Stream_CheckAndLogRequiredLength(TAG, s, 8))
|
||||||
@ -1552,23 +1536,19 @@ const BYTE tssk_privateExponent[] = {
|
|||||||
|
|
||||||
const BYTE tssk_exponent[] = { 0x5b, 0x7b, 0x88, 0xc0 };
|
const BYTE tssk_exponent[] = { 0x5b, 0x7b, 0x88, 0xc0 };
|
||||||
|
|
||||||
BOOL gcc_write_server_security_data(wStream* s, const rdpMcs* mcs)
|
/* TODO: This function does manipulate data in rdpMcs
|
||||||
|
* TODO: Split this out of this function
|
||||||
|
*/
|
||||||
|
BOOL gcc_write_server_security_data(wStream* s, rdpMcs* mcs)
|
||||||
{
|
{
|
||||||
BYTE* sigData;
|
BYTE* sigData;
|
||||||
size_t expLen = 0, keyLen, sigDataLen;
|
size_t expLen = 0, keyLen, sigDataLen;
|
||||||
BYTE encryptedSignature[TSSK_KEY_LENGTH];
|
BYTE encryptedSignature[TSSK_KEY_LENGTH] = { 0 };
|
||||||
BYTE signature[sizeof(initial_signature)];
|
BYTE signature[sizeof(initial_signature)] = { 0 };
|
||||||
UINT32 headerLen, serverRandomLen, serverCertLen, wPublicKeyBlobLen;
|
UINT32 headerLen, serverRandomLen, serverCertLen, wPublicKeyBlobLen;
|
||||||
rdpContext* context;
|
rdpSettings* settings = mcs_get_settings(mcs);
|
||||||
rdpSettings* settings;
|
|
||||||
|
|
||||||
WINPR_ASSERT(s);
|
WINPR_ASSERT(s);
|
||||||
WINPR_ASSERT(mcs);
|
|
||||||
|
|
||||||
context = transport_get_context(mcs->transport);
|
|
||||||
WINPR_ASSERT(context);
|
|
||||||
|
|
||||||
settings = context->settings;
|
|
||||||
WINPR_ASSERT(settings);
|
WINPR_ASSERT(settings);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1799,6 +1779,8 @@ BOOL gcc_read_client_network_data(wStream* s, rdpMcs* mcs, UINT16 blockLength)
|
|||||||
{
|
{
|
||||||
UINT32 i;
|
UINT32 i;
|
||||||
|
|
||||||
|
WINPR_ASSERT(s);
|
||||||
|
WINPR_ASSERT(mcs);
|
||||||
if (blockLength < 4)
|
if (blockLength < 4)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
@ -1848,7 +1830,8 @@ BOOL gcc_write_client_network_data(wStream* s, const rdpMcs* mcs)
|
|||||||
{
|
{
|
||||||
UINT32 i;
|
UINT32 i;
|
||||||
UINT16 length;
|
UINT16 length;
|
||||||
|
WINPR_ASSERT(s);
|
||||||
|
WINPR_ASSERT(mcs);
|
||||||
if (mcs->channelCount > 0)
|
if (mcs->channelCount > 0)
|
||||||
{
|
{
|
||||||
length = mcs->channelCount * 12 + 8;
|
length = mcs->channelCount * 12 + 8;
|
||||||
@ -1875,7 +1858,8 @@ BOOL gcc_read_server_network_data(wStream* s, rdpMcs* mcs)
|
|||||||
UINT16 MCSChannelId;
|
UINT16 MCSChannelId;
|
||||||
UINT16 channelCount;
|
UINT16 channelCount;
|
||||||
UINT32 parsedChannelCount;
|
UINT32 parsedChannelCount;
|
||||||
|
WINPR_ASSERT(s);
|
||||||
|
WINPR_ASSERT(mcs);
|
||||||
if (!Stream_CheckAndLogRequiredLength(TAG, s, 4))
|
if (!Stream_CheckAndLogRequiredLength(TAG, s, 4))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
@ -1912,6 +1896,8 @@ BOOL gcc_read_server_network_data(wStream* s, rdpMcs* mcs)
|
|||||||
BOOL gcc_write_server_network_data(wStream* s, const rdpMcs* mcs)
|
BOOL gcc_write_server_network_data(wStream* s, const rdpMcs* mcs)
|
||||||
{
|
{
|
||||||
UINT32 i;
|
UINT32 i;
|
||||||
|
WINPR_ASSERT(s);
|
||||||
|
WINPR_ASSERT(mcs);
|
||||||
const size_t payloadLen = 8 + mcs->channelCount * 2 + (mcs->channelCount % 2 == 1 ? 2 : 0);
|
const size_t payloadLen = 8 + mcs->channelCount * 2 + (mcs->channelCount % 2 == 1 ? 2 : 0);
|
||||||
|
|
||||||
if (!gcc_write_user_data_header(s, SC_NET, payloadLen))
|
if (!gcc_write_user_data_header(s, SC_NET, payloadLen))
|
||||||
@ -1942,16 +1928,9 @@ BOOL gcc_write_server_network_data(wStream* s, const rdpMcs* mcs)
|
|||||||
BOOL gcc_read_client_cluster_data(wStream* s, rdpMcs* mcs, UINT16 blockLength)
|
BOOL gcc_read_client_cluster_data(wStream* s, rdpMcs* mcs, UINT16 blockLength)
|
||||||
{
|
{
|
||||||
UINT32 redirectedSessionId;
|
UINT32 redirectedSessionId;
|
||||||
rdpContext* context;
|
rdpSettings* settings = mcs_get_settings(mcs);
|
||||||
rdpSettings* settings;
|
|
||||||
|
|
||||||
WINPR_ASSERT(s);
|
WINPR_ASSERT(s);
|
||||||
WINPR_ASSERT(mcs);
|
|
||||||
|
|
||||||
context = transport_get_context(mcs->transport);
|
|
||||||
WINPR_ASSERT(context);
|
|
||||||
|
|
||||||
settings = context->settings;
|
|
||||||
WINPR_ASSERT(settings);
|
WINPR_ASSERT(settings);
|
||||||
|
|
||||||
if (blockLength < 8)
|
if (blockLength < 8)
|
||||||
@ -1988,16 +1967,9 @@ BOOL gcc_read_client_cluster_data(wStream* s, rdpMcs* mcs, UINT16 blockLength)
|
|||||||
BOOL gcc_write_client_cluster_data(wStream* s, const rdpMcs* mcs)
|
BOOL gcc_write_client_cluster_data(wStream* s, const rdpMcs* mcs)
|
||||||
{
|
{
|
||||||
UINT32 flags;
|
UINT32 flags;
|
||||||
rdpContext* context;
|
const rdpSettings* settings = mcs_get_const_settings(mcs);
|
||||||
rdpSettings* settings;
|
|
||||||
|
|
||||||
WINPR_ASSERT(s);
|
WINPR_ASSERT(s);
|
||||||
WINPR_ASSERT(mcs);
|
|
||||||
|
|
||||||
context = transport_get_context(mcs->transport);
|
|
||||||
WINPR_ASSERT(context);
|
|
||||||
|
|
||||||
settings = context->settings;
|
|
||||||
WINPR_ASSERT(settings);
|
WINPR_ASSERT(settings);
|
||||||
|
|
||||||
if (!gcc_write_user_data_header(s, CS_CLUSTER, 12))
|
if (!gcc_write_user_data_header(s, CS_CLUSTER, 12))
|
||||||
@ -2026,16 +1998,9 @@ BOOL gcc_read_client_monitor_data(wStream* s, rdpMcs* mcs, UINT16 blockLength)
|
|||||||
{
|
{
|
||||||
UINT32 index;
|
UINT32 index;
|
||||||
UINT32 monitorCount;
|
UINT32 monitorCount;
|
||||||
rdpContext* context;
|
rdpSettings* settings = mcs_get_settings(mcs);
|
||||||
rdpSettings* settings;
|
|
||||||
|
|
||||||
WINPR_ASSERT(s);
|
WINPR_ASSERT(s);
|
||||||
WINPR_ASSERT(mcs);
|
|
||||||
|
|
||||||
context = transport_get_context(mcs->transport);
|
|
||||||
WINPR_ASSERT(context);
|
|
||||||
|
|
||||||
settings = context->settings;
|
|
||||||
WINPR_ASSERT(settings);
|
WINPR_ASSERT(settings);
|
||||||
|
|
||||||
if (blockLength < 8)
|
if (blockLength < 8)
|
||||||
@ -2098,16 +2063,9 @@ BOOL gcc_write_client_monitor_data(wStream* s, const rdpMcs* mcs)
|
|||||||
UINT32 i;
|
UINT32 i;
|
||||||
UINT16 length;
|
UINT16 length;
|
||||||
INT32 baseX = 0, baseY = 0;
|
INT32 baseX = 0, baseY = 0;
|
||||||
rdpContext* context;
|
const rdpSettings* settings = mcs_get_const_settings(mcs);
|
||||||
rdpSettings* settings;
|
|
||||||
|
|
||||||
WINPR_ASSERT(s);
|
WINPR_ASSERT(s);
|
||||||
WINPR_ASSERT(mcs);
|
|
||||||
|
|
||||||
context = transport_get_context(mcs->transport);
|
|
||||||
WINPR_ASSERT(context);
|
|
||||||
|
|
||||||
settings = context->settings;
|
|
||||||
WINPR_ASSERT(settings);
|
WINPR_ASSERT(settings);
|
||||||
|
|
||||||
WLog_DBG(TAG, "[%s] MonitorCount=%" PRIu32, __FUNCTION__, settings->MonitorCount);
|
WLog_DBG(TAG, "[%s] MonitorCount=%" PRIu32, __FUNCTION__, settings->MonitorCount);
|
||||||
@ -2160,16 +2118,9 @@ BOOL gcc_read_client_monitor_extended_data(wStream* s, rdpMcs* mcs, UINT16 block
|
|||||||
UINT32 index;
|
UINT32 index;
|
||||||
UINT32 monitorCount;
|
UINT32 monitorCount;
|
||||||
UINT32 monitorAttributeSize;
|
UINT32 monitorAttributeSize;
|
||||||
rdpContext* context;
|
rdpSettings* settings = mcs_get_settings(mcs);
|
||||||
rdpSettings* settings;
|
|
||||||
|
|
||||||
WINPR_ASSERT(s);
|
WINPR_ASSERT(s);
|
||||||
WINPR_ASSERT(mcs);
|
|
||||||
|
|
||||||
context = transport_get_context(mcs->transport);
|
|
||||||
WINPR_ASSERT(context);
|
|
||||||
|
|
||||||
settings = context->settings;
|
|
||||||
WINPR_ASSERT(settings);
|
WINPR_ASSERT(settings);
|
||||||
|
|
||||||
if (blockLength < 12)
|
if (blockLength < 12)
|
||||||
@ -2207,16 +2158,9 @@ BOOL gcc_write_client_monitor_extended_data(wStream* s, const rdpMcs* mcs)
|
|||||||
{
|
{
|
||||||
UINT32 i;
|
UINT32 i;
|
||||||
UINT16 length;
|
UINT16 length;
|
||||||
rdpContext* context;
|
const rdpSettings* settings = mcs_get_const_settings(mcs);
|
||||||
rdpSettings* settings;
|
|
||||||
|
|
||||||
WINPR_ASSERT(s);
|
WINPR_ASSERT(s);
|
||||||
WINPR_ASSERT(mcs);
|
|
||||||
|
|
||||||
context = transport_get_context(mcs->transport);
|
|
||||||
WINPR_ASSERT(context);
|
|
||||||
|
|
||||||
settings = context->settings;
|
|
||||||
WINPR_ASSERT(settings);
|
WINPR_ASSERT(settings);
|
||||||
|
|
||||||
if (settings->HasMonitorAttributes)
|
if (settings->HasMonitorAttributes)
|
||||||
@ -2250,6 +2194,8 @@ BOOL gcc_write_client_monitor_extended_data(wStream* s, const rdpMcs* mcs)
|
|||||||
|
|
||||||
BOOL gcc_read_client_message_channel_data(wStream* s, rdpMcs* mcs, UINT16 blockLength)
|
BOOL gcc_read_client_message_channel_data(wStream* s, rdpMcs* mcs, UINT16 blockLength)
|
||||||
{
|
{
|
||||||
|
WINPR_ASSERT(s);
|
||||||
|
WINPR_ASSERT(mcs);
|
||||||
if (blockLength < 4)
|
if (blockLength < 4)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
@ -2267,18 +2213,11 @@ BOOL gcc_read_client_message_channel_data(wStream* s, rdpMcs* mcs, UINT16 blockL
|
|||||||
|
|
||||||
BOOL gcc_write_client_message_channel_data(wStream* s, const rdpMcs* mcs)
|
BOOL gcc_write_client_message_channel_data(wStream* s, const rdpMcs* mcs)
|
||||||
{
|
{
|
||||||
rdpContext* context;
|
const rdpSettings* settings = mcs_get_const_settings(mcs);
|
||||||
rdpSettings* settings;
|
|
||||||
|
|
||||||
WINPR_ASSERT(s);
|
WINPR_ASSERT(s);
|
||||||
WINPR_ASSERT(mcs);
|
WINPR_ASSERT(mcs);
|
||||||
|
|
||||||
context = transport_get_context(mcs->transport);
|
|
||||||
WINPR_ASSERT(context);
|
|
||||||
|
|
||||||
settings = context->settings;
|
|
||||||
WINPR_ASSERT(settings);
|
WINPR_ASSERT(settings);
|
||||||
|
|
||||||
if (freerdp_settings_get_bool(settings, FreeRDP_NetworkAutoDetect) ||
|
if (freerdp_settings_get_bool(settings, FreeRDP_NetworkAutoDetect) ||
|
||||||
settings->SupportHeartbeatPdu || settings->SupportMultitransport)
|
settings->SupportHeartbeatPdu || settings->SupportMultitransport)
|
||||||
{
|
{
|
||||||
@ -2292,7 +2231,8 @@ BOOL gcc_write_client_message_channel_data(wStream* s, const rdpMcs* mcs)
|
|||||||
BOOL gcc_read_server_message_channel_data(wStream* s, rdpMcs* mcs)
|
BOOL gcc_read_server_message_channel_data(wStream* s, rdpMcs* mcs)
|
||||||
{
|
{
|
||||||
UINT16 MCSChannelId;
|
UINT16 MCSChannelId;
|
||||||
|
WINPR_ASSERT(s);
|
||||||
|
WINPR_ASSERT(mcs);
|
||||||
if (!Stream_CheckAndLogRequiredLength(TAG, s, 2))
|
if (!Stream_CheckAndLogRequiredLength(TAG, s, 2))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
@ -2304,6 +2244,8 @@ BOOL gcc_read_server_message_channel_data(wStream* s, rdpMcs* mcs)
|
|||||||
|
|
||||||
BOOL gcc_write_server_message_channel_data(wStream* s, const rdpMcs* mcs)
|
BOOL gcc_write_server_message_channel_data(wStream* s, const rdpMcs* mcs)
|
||||||
{
|
{
|
||||||
|
WINPR_ASSERT(s);
|
||||||
|
WINPR_ASSERT(mcs);
|
||||||
if (mcs->messageChannelId == 0)
|
if (mcs->messageChannelId == 0)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
@ -2323,18 +2265,10 @@ BOOL gcc_write_server_message_channel_data(wStream* s, const rdpMcs* mcs)
|
|||||||
|
|
||||||
BOOL gcc_read_client_multitransport_channel_data(wStream* s, rdpMcs* mcs, UINT16 blockLength)
|
BOOL gcc_read_client_multitransport_channel_data(wStream* s, rdpMcs* mcs, UINT16 blockLength)
|
||||||
{
|
{
|
||||||
rdpContext* context;
|
rdpSettings* settings = mcs_get_settings(mcs);
|
||||||
rdpSettings* settings;
|
|
||||||
|
|
||||||
WINPR_ASSERT(s);
|
WINPR_ASSERT(s);
|
||||||
WINPR_ASSERT(mcs);
|
|
||||||
|
|
||||||
context = transport_get_context(mcs->transport);
|
|
||||||
WINPR_ASSERT(context);
|
|
||||||
|
|
||||||
settings = context->settings;
|
|
||||||
WINPR_ASSERT(settings);
|
WINPR_ASSERT(settings);
|
||||||
|
|
||||||
if (blockLength < 4)
|
if (blockLength < 4)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
@ -2351,18 +2285,10 @@ BOOL gcc_read_client_multitransport_channel_data(wStream* s, rdpMcs* mcs, UINT16
|
|||||||
|
|
||||||
BOOL gcc_write_client_multitransport_channel_data(wStream* s, const rdpMcs* mcs)
|
BOOL gcc_write_client_multitransport_channel_data(wStream* s, const rdpMcs* mcs)
|
||||||
{
|
{
|
||||||
rdpContext* context;
|
const rdpSettings* settings = mcs_get_const_settings(mcs);
|
||||||
rdpSettings* settings;
|
|
||||||
|
|
||||||
WINPR_ASSERT(s);
|
WINPR_ASSERT(s);
|
||||||
WINPR_ASSERT(mcs);
|
|
||||||
|
|
||||||
context = transport_get_context(mcs->transport);
|
|
||||||
WINPR_ASSERT(context);
|
|
||||||
|
|
||||||
settings = context->settings;
|
|
||||||
WINPR_ASSERT(settings);
|
WINPR_ASSERT(settings);
|
||||||
|
|
||||||
if (!gcc_write_user_data_header(s, CS_MULTITRANSPORT, 8))
|
if (!gcc_write_user_data_header(s, CS_MULTITRANSPORT, 8))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
Stream_Write_UINT32(s, settings->MultitransportFlags); /* flags */
|
Stream_Write_UINT32(s, settings->MultitransportFlags); /* flags */
|
||||||
@ -2371,19 +2297,9 @@ BOOL gcc_write_client_multitransport_channel_data(wStream* s, const rdpMcs* mcs)
|
|||||||
|
|
||||||
BOOL gcc_read_server_multitransport_channel_data(wStream* s, rdpMcs* mcs)
|
BOOL gcc_read_server_multitransport_channel_data(wStream* s, rdpMcs* mcs)
|
||||||
{
|
{
|
||||||
|
rdpSettings* settings = mcs_get_settings(mcs);
|
||||||
rdpContext* context;
|
|
||||||
rdpSettings* settings;
|
|
||||||
|
|
||||||
WINPR_ASSERT(s);
|
WINPR_ASSERT(s);
|
||||||
WINPR_ASSERT(mcs);
|
|
||||||
|
|
||||||
context = transport_get_context(mcs->transport);
|
|
||||||
WINPR_ASSERT(context);
|
|
||||||
|
|
||||||
settings = context->settings;
|
|
||||||
WINPR_ASSERT(settings);
|
WINPR_ASSERT(settings);
|
||||||
|
|
||||||
if (!Stream_CheckAndLogRequiredLength(TAG, s, 4))
|
if (!Stream_CheckAndLogRequiredLength(TAG, s, 4))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
@ -2393,7 +2309,11 @@ BOOL gcc_read_server_multitransport_channel_data(wStream* s, rdpMcs* mcs)
|
|||||||
|
|
||||||
BOOL gcc_write_server_multitransport_channel_data(wStream* s, const rdpMcs* mcs)
|
BOOL gcc_write_server_multitransport_channel_data(wStream* s, const rdpMcs* mcs)
|
||||||
{
|
{
|
||||||
|
const rdpSettings* settings = mcs_get_const_settings(mcs);
|
||||||
UINT32 flags = 0;
|
UINT32 flags = 0;
|
||||||
|
|
||||||
|
WINPR_ASSERT(s);
|
||||||
|
WINPR_ASSERT(settings);
|
||||||
if (!gcc_write_user_data_header(s, SC_MULTITRANSPORT, 8))
|
if (!gcc_write_user_data_header(s, SC_MULTITRANSPORT, 8))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
Stream_Write_UINT32(s, flags); /* flags (4 bytes) */
|
Stream_Write_UINT32(s, flags); /* flags (4 bytes) */
|
||||||
|
@ -35,6 +35,6 @@ FREERDP_LOCAL BOOL gcc_write_conference_create_request(wStream* s, wStream* user
|
|||||||
FREERDP_LOCAL BOOL gcc_read_conference_create_response(wStream* s, rdpMcs* mcs);
|
FREERDP_LOCAL BOOL gcc_read_conference_create_response(wStream* s, rdpMcs* mcs);
|
||||||
FREERDP_LOCAL BOOL gcc_write_conference_create_response(wStream* s, wStream* userData);
|
FREERDP_LOCAL BOOL gcc_write_conference_create_response(wStream* s, wStream* userData);
|
||||||
FREERDP_LOCAL BOOL gcc_write_client_data_blocks(wStream* s, const rdpMcs* mcs);
|
FREERDP_LOCAL BOOL gcc_write_client_data_blocks(wStream* s, const rdpMcs* mcs);
|
||||||
FREERDP_LOCAL BOOL gcc_write_server_data_blocks(wStream* s, const rdpMcs* mcs);
|
FREERDP_LOCAL BOOL gcc_write_server_data_blocks(wStream* s, rdpMcs* mcs);
|
||||||
|
|
||||||
#endif /* FREERDP_LIB_CORE_GCC_H */
|
#endif /* FREERDP_LIB_CORE_GCC_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user