summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPavel Roskin <plroskin@gmail.com>2016-12-15 23:10:57 -0800
committerPavel Roskin <plroskin@gmail.com>2016-12-17 16:15:07 -0800
commit0c6b5111af5ccf7f4b6d3bae4fca39f65401b011 (patch)
treed814becf758529403e8e4af62f3a97cec1dc597c
parent9584e22ba63afd4793ea47c71299406e595e6dbb (diff)
downloadxrdp-proprietary-0c6b5111af5ccf7f4b6d3bae4fca39f65401b011.tar.gz
xrdp-proprietary-0c6b5111af5ccf7f4b6d3bae4fca39f65401b011.zip
Regression fix: session matching uses wrong bpp for Xorg
The removal of "xserverbpp=24" from the Xorg entry lead to a regression. Clients with a different bpp would not reconnect to an xorgxrdp session if the client's bpp is different, even though xorgxrdp is always using 24 bpp. Imply "xserverbpp=24" for "code=20" in xrdp.ini.
-rw-r--r--xrdp/xrdp_mm.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/xrdp/xrdp_mm.c b/xrdp/xrdp_mm.c
index 07c69327..bb6bc5d8 100644
--- a/xrdp/xrdp_mm.c
+++ b/xrdp/xrdp_mm.c
@@ -229,14 +229,19 @@ xrdp_mm_send_login(struct xrdp_mm *self)
out_uint16_be(s, self->wm->screen->width);
out_uint16_be(s, self->wm->screen->height);
- if (xserverbpp > 0)
+ /* select and send X server bpp */
+ if (xserverbpp == 0)
{
- out_uint16_be(s, xserverbpp);
- }
- else
- {
- out_uint16_be(s, self->wm->screen->bpp);
+ if (self->code == 20)
+ {
+ xserverbpp = 24; /* xorgxrdp is always at 24 bpp */
+ }
+ else
+ {
+ xserverbpp = self->wm->screen->bpp; /* use client's bpp */
+ }
}
+ out_uint16_be(s, xserverbpp);
/* send domain */
if(self->wm->client_info->domain[0]!='_')