GUACAMOLE-249: Push FreeRDP settings in preconnect hander (OrderSupport is reset otherwise).
We set the values within the OrderSupport array to match which RDP messages we have implemented within guac_rdp_push_settings(). This array is reset to its default values prior to the preconnect handler being invoked, thus guac_rdp_push_settings() MUST be invoked within the preconnect handler for its settings to have the intended effect. Without proper values within OrderSupport, the initial RDP negotiation process will claim support for messages that we don't actually support, resulting in graphical artifacts and unexpected behavior.
This commit is contained in:
parent
7ef1dcafba
commit
d7151e0d84
@ -87,6 +87,9 @@ BOOL rdp_freerdp_pre_connect(freerdp* instance) {
|
||||
guac_rdp_client* rdp_client = (guac_rdp_client*) client->data;
|
||||
guac_rdp_settings* settings = rdp_client->settings;
|
||||
|
||||
/* Push desired settings to FreeRDP */
|
||||
guac_rdp_push_settings(client, settings, instance);
|
||||
|
||||
/* Init FreeRDP add-in provider */
|
||||
freerdp_register_addin_provider(freerdp_channels_load_static_addin_entry, 0);
|
||||
|
||||
@ -380,9 +383,6 @@ static int guac_rdp_handle_connection(guac_client* client) {
|
||||
/* Set default pointer */
|
||||
guac_common_cursor_set_pointer(rdp_client->display->cursor);
|
||||
|
||||
/* Push desired settings to FreeRDP */
|
||||
guac_rdp_push_settings(client, settings, rdp_inst);
|
||||
|
||||
/* Connect to RDP server */
|
||||
if (!freerdp_connect(rdp_inst)) {
|
||||
guac_client_abort(client, GUAC_PROTOCOL_STATUS_UPSTREAM_NOT_FOUND,
|
||||
|
Loading…
Reference in New Issue
Block a user