From 127ab453293df1f4da759302dd101bab250a8f49 Mon Sep 17 00:00:00 2001 From: Lauri Kasanen Date: Mon, 29 Jan 2024 12:20:57 +0200 Subject: [PATCH] Send back an ExtendedDesktopSize to a SetDesktopSize request even when resize is not allowed --- common/rfb/VNCSConnectionST.cxx | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/common/rfb/VNCSConnectionST.cxx b/common/rfb/VNCSConnectionST.cxx index 511e12c..c470de7 100644 --- a/common/rfb/VNCSConnectionST.cxx +++ b/common/rfb/VNCSConnectionST.cxx @@ -997,8 +997,8 @@ void VNCSConnectionST::setDesktopSize(int fb_width, int fb_height, { unsigned int result; - if (!(accessRights & AccessSetDesktopSize)) return; - if (!rfb::Server::acceptSetDesktopSize) return; + if (!(accessRights & AccessSetDesktopSize)) goto justnotify; + if (!rfb::Server::acceptSetDesktopSize) goto justnotify; // Don't bother the desktop with an invalid configuration if (!layout.validate(fb_width, fb_height)) { @@ -1021,6 +1021,14 @@ void VNCSConnectionST::setDesktopSize(int fb_width, int fb_height, throw Exception("Desktop configured a different screen layout than requested"); server->notifyScreenLayoutChange(this); } + + return; + + justnotify: + writer()->writeExtendedDesktopSize(reasonClient, resultProhibited, + server->pb->getRect().width(), + server->pb->getRect().height(), + server->screenLayout); } void VNCSConnectionST::fence(rdr::U32 flags, unsigned len, const char data[])