Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/Remmina/Remmina.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntenore Gatta <antenore@simbiosi.org>2019-08-14 00:52:14 +0300
committerAntenore Gatta <antenore@simbiosi.org>2019-08-14 00:53:36 +0300
commitd4e114498d492583a103c81fa07d3f3eff111728 (patch)
tree3ba8c7428c355b44e8f2fcdd7e895c0f581aee36 /plugins
parent7e860780521ab2c7ce341d5d2f57da9a6e158c09 (diff)
rdpr channel initialization for special devices sharing. Closes #1955
Diffstat (limited to 'plugins')
-rw-r--r--plugins/rdp/rdp_plugin.c26
1 files changed, 19 insertions, 7 deletions
diff --git a/plugins/rdp/rdp_plugin.c b/plugins/rdp/rdp_plugin.c
index 951f18d61..a523585be 100644
--- a/plugins/rdp/rdp_plugin.c
+++ b/plugins/rdp/rdp_plugin.c
@@ -784,10 +784,13 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp)
const gchar* cs;
RemminaFile* remminafile;
rfContext* rfi = GET_PLUGIN_DATA(gp);
+ rdpChannels* channels;
gchar *gateway_host;
gint gateway_port;
gint desktopOrientation, desktopScaleFactor, deviceScaleFactor;
+ channels = rfi->instance->context->channels;
+
remminafile = remmina_plugin_service->protocol_plugin_get_file(gp);
#if defined(PROXY_TYPE_IGNORE)
@@ -1103,6 +1106,9 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp)
drive = (RDPDR_DRIVE*)malloc(sizeof(RDPDR_DRIVE));
ZeroMemory(drive, sizeof(RDPDR_DRIVE));
+ rfi->settings->DeviceRedirection = TRUE;
+ remmina_rdp_load_static_channel_addin(channels, rfi->settings, "rdpdr", rfi->settings);
+
s = strrchr( cs, '/' );
if ( s == NULL || s[1] == 0 )
s = remmina_rdp_plugin_default_drive_name;
@@ -1120,13 +1126,13 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp)
}
if (remmina_plugin_service->file_get_int(remminafile, "shareprinter", FALSE)) {
- RDPDR_PRINTER* printer;
- printer = (RDPDR_PRINTER*)malloc(sizeof(RDPDR_PRINTER));
- ZeroMemory(printer, sizeof(RDPDR_PRINTER));
-
- printer->Type = RDPDR_DTYP_PRINT;
rfi->settings->DeviceRedirection = TRUE;
+ remmina_rdp_load_static_channel_addin(channels, rfi->settings, "rdpdr", rfi->settings);
+
+ RDPDR_PRINTER* printer;
+ printer = (RDPDR_PRINTER*) calloc(1, sizeof(RDPDR_PRINTER));
+ printer->Type = RDPDR_DTYP_PRINT;
rfi->settings->RedirectPrinters = TRUE;
const gchar* pn = remmina_plugin_service->file_get_string(remminafile, "printername");
@@ -1148,12 +1154,14 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp)
smartcard->Type = RDPDR_DTYP_SMARTCARD;
+ rfi->settings->DeviceRedirection = TRUE;
+ remmina_rdp_load_static_channel_addin(channels, rfi->settings, "rdpdr", rfi->settings);
+
const gchar* sn = remmina_plugin_service->file_get_string(remminafile, "smartcardname");
if ( sn != NULL && sn[0] != '\0' ) {
smartcard->Name = _strdup(sn);
}
- rfi->settings->DeviceRedirection = TRUE;
rfi->settings->RedirectSmartCards = TRUE;
freerdp_device_collection_add(rfi->settings, (RDPDR_DEVICE*)smartcard);
@@ -1173,6 +1181,9 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp)
serial->Type = RDPDR_DTYP_SERIAL;
+ rfi->settings->DeviceRedirection = TRUE;
+ remmina_rdp_load_static_channel_addin(channels, rfi->settings, "rdpdr", rfi->settings);
+
const gchar* sn = remmina_plugin_service->file_get_string(remminafile, "serialname");
if ( sn != NULL && sn[0] != '\0' ) {
serial->Name = _strdup(sn);
@@ -1192,7 +1203,6 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp)
serial->Permissive = _strdup("permissive");
}
- rfi->settings->DeviceRedirection = TRUE;
rfi->settings->RedirectSerialPorts = TRUE;
freerdp_device_collection_add(rfi->settings, (RDPDR_DEVICE*)serial);
@@ -1206,6 +1216,8 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp)
parallel->Type = RDPDR_DTYP_PARALLEL;
rfi->settings->DeviceRedirection = TRUE;
+ remmina_rdp_load_static_channel_addin(channels, rfi->settings, "rdpdr", rfi->settings);
+
rfi->settings->RedirectParallelPorts = TRUE;
const gchar* pn = remmina_plugin_service->file_get_string(remminafile, "parallelname");