summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--common/xrdp_constants.h3
-rw-r--r--libxrdp/xrdp_caps.c18
2 files changed, 11 insertions, 10 deletions
diff --git a/common/xrdp_constants.h b/common/xrdp_constants.h
index d5f7a8a8..73fd95d7 100644
--- a/common/xrdp_constants.h
+++ b/common/xrdp_constants.h
@@ -283,6 +283,9 @@
#define RDP_CAPSET_VIRCHAN 20
#define RDP_CAPLEN_VIRCHAN 0x08
+#define RDP_CAPSET_MULTIFRAGMENT 0x001A
+#define RDP_CAPLEN_MULTIFRAGMENT 0x08
+
#define RDP_SOURCE "MSTSC"
/* Logon flags */
diff --git a/libxrdp/xrdp_caps.c b/libxrdp/xrdp_caps.c
index 4db1da5e..9a240d4f 100644
--- a/libxrdp/xrdp_caps.c
+++ b/libxrdp/xrdp_caps.c
@@ -926,23 +926,21 @@ xrdp_caps_send_demand_active(struct xrdp_rdp *self)
out_uint16_le(s, 5);
out_uint8(s, 0); /* client sets */
- if (self->client_info.use_fast_path & 1) /* fastpath output on */
+ if (self->client_info.use_fast_path & FASTPATH_OUTPUT_SUPPORTED) /* fastpath output on */
{
+ /* multifragment update */
caps_count++;
out_uint16_le(s, 0x001A); /* 26 CAPSETTYPE_MULTIFRAGMENTUPDATE */
out_uint16_le(s, 8);
out_uint32_le(s, 3 * 1024 * 1024); /* 3MB */
- }
- /* frame acks */
- caps_count++;
- out_uint16_le(s, 0x001E); /* CAPSETTYPE_FRAME_ACKNOWLEDGE */
- out_uint16_le(s, 8);
- out_uint32_le(s, 2); /* 2 frames in flight */
+ /* frame acks */
+ caps_count++;
+ out_uint16_le(s, 0x001E); /* CAPSETTYPE_FRAME_ACKNOWLEDGE */
+ out_uint16_le(s, 8);
+ out_uint32_le(s, 2); /* 2 frames in flight */
- /* surface commands */
- if (self->client_info.use_fast_path & 1) /* surface commands require fastpath output */
- {
+ /* surface commands */
caps_count++;
out_uint16_le(s, RDP_CAPSET_SURFCMDS); /* CAPSETTYPE_SURFACE_COMMANDS */
out_uint16_le(s, RDP_CAPLEN_SURFCMDS); /* lengthCapability */