From 0c6b5111af5ccf7f4b6d3bae4fca39f65401b011 Mon Sep 17 00:00:00 2001 From: Pavel Roskin Date: Thu, 15 Dec 2016 23:10:57 -0800 Subject: [PATCH] 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. --- xrdp/xrdp_mm.c | 17 +++++++++++------ 1 file 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]!='_')