[ 
https://issues.apache.org/jira/browse/GUACAMOLE-1115?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17657018#comment-17657018
 ] 

Mike Jumper commented on GUACAMOLE-1115:
----------------------------------------

If an issue is closed as "Fixed", "Done", or "Implemented" in our JIRA, it 
indicates that code has been merged to address that specific issue. You can 
always find the relevant commit(s) by searching for the JIRA issue key in the 
git history, and relevant PRs by searching for the JIRA issue key in GitHub. 
Our commit messages and PR titles always contain the issue key.

The only exception to this would be an issue with a "Fixed by" link to another 
issue in JIRA, in which case the relevant code would mention _that_ issue.

> RDP print process may hang
> --------------------------
>
>                 Key: GUACAMOLE-1115
>                 URL: https://issues.apache.org/jira/browse/GUACAMOLE-1115
>             Project: Guacamole
>          Issue Type: Bug
>          Components: guacamole-server
>    Affects Versions: 1.1.0
>            Reporter: Jimmy
>            Assignee: Mike Jumper
>            Priority: Minor
>             Fix For: 1.5.0
>
>
> I found the printing problem that locks up the entire session and produces 
> the disconnect.
> When connecting the Windows 2010 and printing the document in Microsoft Word, 
> I encountered this problem.
> This problem isn't always produced and it's sometimes produced.
>  
> So, I have analyzed the printing part of the guacamole server project.
> I have found the following issue:
> If *guac_rdp_print_job_set_state()* function is called after 
> *guac_rdp_print_job_wait_for_ack()* call, this produces the lock of the 
> entire session.
>  
> {code:java}
> static void guac_rdp_print_job_set_state(guac_rdp_print_job* job,
>         guac_rdp_print_job_state state) {
>     pthread_mutex_lock(&(job->state_lock));
>     /* Update stream state, signalling modification */
>     job->state = state;
>     pthread_cond_signal(&(job->state_modified));
>     pthread_mutex_unlock(&(job->state_lock));
> }
> {code}
>   
> {code:java}
> static int guac_rdp_print_job_wait_for_ack(guac_rdp_print_job* job) {
>     /* Wait for ack if stream open and not yet received */
>     pthread_mutex_lock(&(job->state_lock));
>     if (job->state == GUAC_RDP_PRINT_JOB_WAITING_FOR_ACK)
>         pthread_cond_wait(&job->state_modified, &job->state_lock);
>     /* Reset state if ack received */
>     int got_ack = (job->state == GUAC_RDP_PRINT_JOB_ACK_RECEIVED);
>     if (got_ack)
>         job->state = GUAC_RDP_PRINT_JOB_WAITING_FOR_ACK;
>     /* Return whether ack was successfully received */
>     pthread_mutex_unlock(&(job->state_lock));
>     return got_ack;
> }
> {code}
>   
> I think that this issue can produce a printing problem and a lock of the 
> entire session.
> Please let me know whether my thought is correct.
>  
> Thanks.
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to