diff options
| author | Pavel Roskin <plroskin@gmail.com> | 2016-12-15 23:10:57 -0800 |
|---|---|---|
| committer | Pavel Roskin <plroskin@gmail.com> | 2016-12-17 16:15:07 -0800 |
| commit | 0c6b5111af5ccf7f4b6d3bae4fca39f65401b011 (patch) | |
| tree | d814becf758529403e8e4af62f3a97cec1dc597c /xrdp/xrdp_mm.c | |
| parent | 9584e22ba63afd4793ea47c71299406e595e6dbb (diff) | |
| download | xrdp-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.
Diffstat (limited to 'xrdp/xrdp_mm.c')
| -rw-r--r-- | xrdp/xrdp_mm.c | 17 |
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]!='_') |
