Details
-
Bug
-
Status: Resolved
-
Critical
-
Resolution: Fixed
-
0.9.10-incubating, 0.9.11-incubating
-
None
Description
Recent changes moved the RDP printer within Guacamole from asynchronous transfer (independent of received "ack" messages) to synchronous transfer. This is fine in itself, but the read() call pulling more data from GhostScript in reponse to an "ack" actually occurs within the handler for that "ack". If GhostScript is busy processing things and that read() blocks, handling of user input as a whole gets blocked.
The actual reads need to be moved into a printer-specific thread, with receipt of "ack" signalling that more data should be read, allowing the ack handler to finish regardless of GhostScript's state.