mike-jumper opened a new pull request #378: URL: https://github.com/apache/guacamole-server/pull/378
As handling of inbound Guacamole messages for the RDP support is inherently tied to the overall RDP `message_lock` (this lock must be acquired before sending out the RDP versions of received mouse events, keyboard events, etc.), the RDP print process has the potential to deadlock if it needs to wait for an inbound "ack" message. The `message_lock` will be acquired before requesting that FreeRDP handle the RDP event queue (the part of the library that performs housekeeping functions around the print job), which may block handling of Guacamole events like "ack". (See https://issues.apache.org/jira/browse/GUACAMOLE-1115?focusedCommentId=17508379&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-17508379) This change alters the print job handling to temporarily release the `message_lock` before entering a lengthy operation that may otherwise get blocked. The lock is only released if the current thread actually holds the lock, and the lock is reacquired after the lengthy operation is completed. This change also adds an explicit `kill()` around the filter process to ensure the print job is entirely cleaned up, avoiding having guacd's automatic child process termination failsafe kick in. I've set the merge base of this to `staging/1.5.0` as this seems an important thing to correct, but let me know if this should be kept out of scope for 1.5.0. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
