From 3a1d70d9ba4fbda4a4c6174bd1f4faad2f400965 Mon Sep 17 00:00:00 2001 From: Jakob Kaivo Date: Sat, 31 Mar 2018 22:15:39 -0400 Subject: [PATCH] add support for the "pcb" block in .rdp files provided by Project Honolulu in the VM interface --- client/common/file.c | 10 ++++++++++ include/freerdp/client/file.h | 2 ++ 2 files changed, 12 insertions(+) diff --git a/client/common/file.c b/client/common/file.c index 86df336e9..ed43264ff 100644 --- a/client/common/file.c +++ b/client/common/file.c @@ -298,6 +298,8 @@ static int freerdp_client_rdp_file_set_string(rdpFile* file, const char* name, c tmp = &file->DevicesToRedirect; else if (_stricmp(name, "winposstr") == 0) tmp = &file->WinPosStr; + else if (_stricmp(name, "pcb") == 0) + tmp = &file->PreconnectionBlob; else standard = 1; @@ -612,6 +614,7 @@ BOOL freerdp_client_populate_rdp_file_from_settings(rdpFile* file, const rdpSett SETTING_MODIFIED_SET_STRING(file->RemoteApplicationCmdLine, settings, RemoteApplicationCmdLine); SETTING_MODIFIED_SET(file->SpanMonitors, settings, SpanMonitors); SETTING_MODIFIED_SET(file->UseMultiMon, settings, UseMultimon); + SETTING_MODIFIED_SET_STRING(file->PreconnectionBlob, settings, PreconnectionBlob); return TRUE; } @@ -1058,6 +1061,13 @@ BOOL freerdp_client_populate_settings_from_rdp_file(rdpFile* file, rdpSettings* freerdp_set_param_uint32(settings, FreeRDP_KeyboardHook, file->KeyboardHook); } + if (~((size_t) file->PreconnectionBlob)) + { + freerdp_set_param_string(settings, FreeRDP_PreconnectionBlob, file->PreconnectionBlob); + freerdp_set_param_bool(settings, FreeRDP_SendPreconnectionPdu, TRUE); + freerdp_set_param_bool(settings, FreeRDP_VmConnectMode, TRUE); + } + if (file->argc > 1) { char* ConnectionFile = settings->ConnectionFile; diff --git a/include/freerdp/client/file.h b/include/freerdp/client/file.h index 5765100f5..8f12a29b2 100644 --- a/include/freerdp/client/file.h +++ b/include/freerdp/client/file.h @@ -151,6 +151,8 @@ struct rdp_file LPSTR DevicesToRedirect; /* devicestoredirect */ LPSTR WinPosStr; /* winposstr */ + LPSTR PreconnectionBlob; /* pcb */ + int lineCount; int lineSize; rdpFileLine* lines;