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]


Reply via email to