summaryrefslogtreecommitdiffstats
path: root/libxrdp
diff options
context:
space:
mode:
Diffstat (limited to 'libxrdp')
-rw-r--r--libxrdp/xrdp_rdp.c9
-rw-r--r--libxrdp/xrdp_sec.c10
2 files changed, 18 insertions, 1 deletions
diff --git a/libxrdp/xrdp_rdp.c b/libxrdp/xrdp_rdp.c
index 12490235..264f6096 100644
--- a/libxrdp/xrdp_rdp.c
+++ b/libxrdp/xrdp_rdp.c
@@ -103,6 +103,15 @@ xrdp_rdp_read_config(struct xrdp_client_info *client_info)
client_info->use_bitmap_comp = 1;
}
}
+ else if (g_strcasecmp(item, "bulk_compression") == 0)
+ {
+ if (g_strcasecmp(value, "yes") == 0 ||
+ g_strcasecmp(value, "true") == 0 ||
+ g_strcasecmp(value, "1") == 0)
+ {
+ client_info->use_bulk_comp = 1;
+ }
+ }
else if (g_strcasecmp(item, "crypt_level") == 0)
{
if (g_strcasecmp(value, "low") == 0)
diff --git a/libxrdp/xrdp_sec.c b/libxrdp/xrdp_sec.c
index 66b66264..17348274 100644
--- a/libxrdp/xrdp_sec.c
+++ b/libxrdp/xrdp_sec.c
@@ -385,8 +385,16 @@ xrdp_sec_process_logon_info(struct xrdp_sec *self, struct stream *s)
if (flags & RDP_COMPRESSION)
{
- self->rdp_layer->client_info.rdp_compression = 1;
DEBUG(("flag RDP_COMPRESSION found"));
+ if (self->rdp_layer->client_info.use_bulk_comp)
+ {
+ DEBUG(("flag RDP_COMPRESSION set"));
+ self->rdp_layer->client_info.rdp_compression = 1;
+ }
+ else
+ {
+ DEBUG(("flag RDP_COMPRESSION not set"));
+ }
}
in_uint16_le(s, len_domain);