The Guacamole protocol as designed currently imposes limitations on the configuration of a connection:
- Connection configuration can be applied only during the initial protocol handshake. If the user wishes to change aspects of the connection while the connection is in progress, such as to alter the terminal appearance or provide a username/password in response to a request from the remote desktop server, this cannot be done.
- Connection parameters are inherently limited by the maximum length of an instruction element and the overall maximum length of instructions. Providing lengthy SSH keys for authentication, for example, is problematic (GUACAMOLE-350).
With relatively minor changes to the Guacamole protocol, the above limitations can be addressed. By sending connection parameters using streaming instructions rather than as elements of a single, monolithic "connect" instruction, parameter values can have unlimited length. By extending the use of that parameter streaming instruction such that it can be used both during a connection and during the handshake, protocol plugins can choose to allow certain parameters to be set or updated while the connection is in progress.