summaryrefslogtreecommitdiffstats
path: root/libxrdp/xrdp_rdp.c
diff options
context:
space:
mode:
authorJay Sorg <jay.sorg@gmail.com>2012-05-13 13:56:15 -0700
committerJay Sorg <jay.sorg@gmail.com>2012-05-13 13:56:15 -0700
commite0fc7297f5bd0c4297e6b6b8ca2d7cd80251b1c9 (patch)
treec59520c6fa41aede3b3e9940518474cade61dc56 /libxrdp/xrdp_rdp.c
parent67bd319adf4fafabcb1ea9124b8d64209d3ebcf7 (diff)
downloadxrdp-proprietary-e0fc7297f5bd0c4297e6b6b8ca2d7cd80251b1c9.tar.gz
xrdp-proprietary-e0fc7297f5bd0c4297e6b6b8ca2d7cd80251b1c9.zip
pass the client_info(caps) on to module and xserver
Diffstat (limited to 'libxrdp/xrdp_rdp.c')
-rw-r--r--libxrdp/xrdp_rdp.c30
1 files changed, 29 insertions, 1 deletions
diff --git a/libxrdp/xrdp_rdp.c b/libxrdp/xrdp_rdp.c
index 08618610..bdbeed48 100644
--- a/libxrdp/xrdp_rdp.c
+++ b/libxrdp/xrdp_rdp.c
@@ -157,6 +157,7 @@ xrdp_rdp_create(struct xrdp_session* session, struct trans* trans)
#if defined(XRDP_FREERDP1)
self->mppc_enc = mppc_enc_new(PROTO_RDP_50);
#endif
+ self->client_info.size = sizeof(self->client_info);
DEBUG(("out xrdp_rdp_create"));
return self;
}
@@ -796,6 +797,32 @@ xrdp_process_capset_brushcache(struct xrdp_rdp* self, struct stream* s,
}
/*****************************************************************************/
+static int APP_CC
+xrdp_process_offscreen_bmpcache(struct xrdp_rdp* self, struct stream* s,
+ int len)
+{
+ int i32;
+
+ if (len - 4 < 8)
+ {
+ g_writeln("xrdp_process_offscreen_bmpcache: bad len");
+ return 1;
+ }
+ in_uint32_le(s, i32);
+ self->client_info.offscreen_support_level = i32;
+ in_uint16_le(s, i32);
+ self->client_info.offscreen_cache_size = i32 * 1024;
+ in_uint16_le(s, i32);
+ self->client_info.offscreen_cache_entries = i32;
+ g_writeln("xrdp_process_offscreen_bmpcache: support level %d "
+ "cache size %d MB cache entries %d",
+ self->client_info.offscreen_support_level,
+ self->client_info.offscreen_cache_size,
+ self->client_info.offscreen_cache_entries);
+ return 0;
+}
+
+/*****************************************************************************/
int APP_CC
xrdp_rdp_process_confirm_active(struct xrdp_rdp* self, struct stream* s)
{
@@ -869,7 +896,8 @@ xrdp_rdp_process_confirm_active(struct xrdp_rdp* self, struct stream* s)
DEBUG(("--16"));
break;
case 17: /* 17 */
- DEBUG(("--16"));
+ DEBUG(("CAPSET_TYPE_OFFSCREEN_CACHE"));
+ xrdp_process_offscreen_bmpcache(self, s, len);
break;
case RDP_CAPSET_BMPCACHE2: /* 19 */
DEBUG(("RDP_CAPSET_BMPCACHE2"));