necouchman opened a new pull request, #566: URL: https://github.com/apache/guacamole-server/pull/566
This pull request brings the VNC resize support in Guacamole in line with the RFB standard: * The client must receive an `ExtendedDesktopSize` rectangle message from the server before trying to send its size to the server. Unless and until this has been received, no `SetDesktopSize` message can be sent, and sending it will either be ignored by the server or cause the server to drop the connection. In libvncclient, the receipt of this message initializes the `client->screen` data structure, so we test for that in order to find out if the message has been sent and we are allowed to send the client size to the server. * This makes the initial sizing of the remote desktop to the client size a bit challenging, since we cannot send that initial message until we've received and processed at least one message from the server. So, I had to shift around the stuff in main client thread a bit, add a couple of flag members to the `guac_vnc_client` data structure to track this. If there's a better way to do this, do not hesitate to suggest it. * I also simplified the `configure.ac` checks and resulting definitions so that both the `rfbSetDesktopSizeMsg` and `client->screen` items need to be present for it to be enabled. If I recall correctly during testing, there were some VNC servers that supported resizing even though they did not initialize or support the `screen` members, and so some of the changes we had made in trying to get this to work intentionally ignored that and tried to send the `SetDesktopSize` message, anyway. Unfortunately, ignoring that breaks connections for the VNC servers that truly do not support `screen` and `SetDesktopSize`, so it seems like it is likely best to just follow the RFB standard and the way the libvncclient implements that standard and go this route. Final note, it does look like the `SendDesktopSize()` function in libvncclient is still broken, at least, in the version being pulled in by the Alpine Linux distro for the Docker image, and I couldn't get that to work with a VNC server that I know supports resizing properly. So, I've fallen back to not using that built-in function, and, instead, implementing one that does more or less the same things, but 1) actually works, and 2) can log things in a way that the Guacamole admins can see. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@guacamole.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org