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.
---

Reply via email to