GitHub user mike-jumper opened a pull request:
https://github.com/apache/incubator-guacamole-server/pull/59
GUACAMOLE-200: Do not allow read() to block input handling
From [GUACAMOLE-200](https://issues.apache.org/jira/browse/GUACAMOLE-200):
>
> Recent changes moved the RDP printer within Guacamole from asynchronous
transfer (independent of received "ack" messages) to synchronous transfer. This
is fin 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.
>
This change refactors the printer implementation such that printer reads
occur within a separate thread.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/mike-jumper/incubator-guacamole-server
printer-thread
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/incubator-guacamole-server/pull/59.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #59
----
commit 3fc43fba37043cb1f00bde0cccbf194c87a8dbc7
Author: Michael Jumper <[email protected]>
Date: 2017-02-13T22:44:06Z
GUACAMOLE-200: Refactor RDPDR printer such that the "ack" handler cannot
block.
commit d23a22b7c6e966cde6a175b38cc81f005263483d
Author: Michael Jumper <[email protected]>
Date: 2017-02-14T02:42:03Z
GUACAMOLE-200: Clean up PostScript document title search logic.
commit 17093a81491d871504d614bf211efe4346fbdeff
Author: Michael Jumper <[email protected]>
Date: 2017-02-14T07:08:54Z
GUACAMOLE-200: Kill any remaining print job when connection closes.
commit 1537e475af475ff4e5388c573f9f83b4ef0a13ba
Author: Michael Jumper <[email protected]>
Date: 2017-02-14T07:51:33Z
GUACAMOLE-200: Refactor RDPDR print job object to top-level.
commit 5a68f932d6cc048c3ec9df8c48e64cb4e7a36202
Author: Michael Jumper <[email protected]>
Date: 2017-02-14T08:02:17Z
GUACAMOLE-200: Maintain print jobs at top level. Do not rely on proper free
of RDPDR plugin.
commit bf2a5885d05dca09ee4b8d73130e25e70d66a512
Author: Michael Jumper <[email protected]>
Date: 2017-02-14T08:09:24Z
GUACAMOLE-200: Move print job cleanup into main RDP client thread.
----
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---