Uploaded image for project: 'Guacamole'
  1. Guacamole
  2. GUACAMOLE-1115

RDP print process may hang

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 1.1.0
    • 1.5.0
    • guacamole-server
    • None

    Description

      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.

       

      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));
      }
      

        

      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;
      }
      

        

      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.

       

      Attachments

        Issue Links

          Activity

            People

              mjumper Mike Jumper
              MyJimmy Jimmy
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: