Asterisk
  1. Asterisk
  2. ASTERISK-26715

app_queue: Member will not receive any new calls after doing a transfer if wrapuptime = greater than 0 and using Local channel

    Details

    • Type: Bug Bug
    • Status: Closed
    • Severity: Major Major
    • Resolution: Fixed
    • Affects Version/s: 11.25.1, 13.13.1
    • Target Release Version/s: 13.17.0, 14.6.0, 15.0.0
    • Component/s: Applications/app_queue
    • Security Level: None
    • Labels:
      None
    • Frequency of Occurrence:
      Constant
    • Regression:
      Yes

      Description

      To reproduce edit queues.conf
      wrapuptime = 10
      Dynamic member answers a call and transfers caller to any extension.
      Member will not receive a new call from queue until all parties involved in transfer hangup.

      Testing multiple revisions tells me that the regression was introduced between 2015-02-27 and 2016-01-31. I arrived at this conclusion by testing multiple versions of Asterisk rpms I had laying around until I could reproduce the breakage.

      At some point between 2015-02-27 and 2016-01-31 something introduced (in call) state in which broke agent status when wrapuptime is defined:
      Example:

      Local/214@queue-agent/n (ringinuse disabled) (dynamic) (in call) (Not in use) has taken 2 calls (last was 578 secs ago)
      

      The last release I am certain that wrapuptime was working properly was 11.16
      Based on this additional investigation and review of the changelog it is probably this commit which caused the regression

      Release 11

      2015-12-29 05:44 +0000 [1943cfc53c] Martin Tomec <tomec.martin@gmail.com>
      
          app_queue: Add member flag "in_call" to prevent reading wrong lastcall time
      
      Member lastcall time is updated later than member status. There was chance to
      check wrapuptime for available member with wrong (old) lastcall time.
      New boolean flag "in_call" is set to true right before connecting call, and
      reset to false after update of lastcall time. Members with "in_call" set to true
      are treat as unavailable.
      
      ASTERISK-19820 #close
      Change-Id: I1923230cf9859ee51563a8ed420a0628b4d2e500
      

      Release 13

      2015-12-29 04:31 +0000 [338a8ffed6]  Martin Tomec <tomec.martin@gmail.com>
      
      	* app_queue: Add member flag "in_call" to prevent reading wrong lastcall time
      
      	  Member lastcall time is updated later than member status. There was chance to
      	  check wrapuptime for available member with wrong (old) lastcall time.
      	  New boolean flag "in_call" is set to true right before connecting call, and
      	  reset to false after update of lastcall time. Members with "in_call" set to true
      	  are treat as unavailable.
      
      	  ASTERISK-19820 #close
      
      	  Change-Id: I1923230cf9859ee51563a8ed420a0628b4d2e500
      
      1. bt26715onTransfer.txt
        8 kB
        David Brillert
      2. fulldebug.txt
        184 kB
        David Brillert

        Issue Links

          Activity

          Hide
          David Brillert added a comment - - edited

          After applying https://gerrit.asterisk.org/#/c/5639/ to Asterisk 13 SVN
          I get a segfault each time an agent answers a call on their Polycom phone and tries a SIP attended transfer to any other extension.

          Show
          David Brillert added a comment - - edited After applying https://gerrit.asterisk.org/#/c/5639/ to Asterisk 13 SVN I get a segfault each time an agent answers a call on their Polycom phone and tries a SIP attended transfer to any other extension.
          Hide
          Asterisk Team added a comment -

          This issue has been reopened as a result of your commenting on it as the reporter. It will be triaged once again as applicable.

          Show
          Asterisk Team added a comment - This issue has been reopened as a result of your commenting on it as the reporter. It will be triaged once again as applicable.
          Hide
          David Brillert added a comment -

          Attaching back trace file bt26715onTransfer.txt

          Show
          David Brillert added a comment - Attaching back trace file bt26715onTransfer.txt
          Hide
          Joshua Colp added a comment - - edited

          I just did this with 13 from git with no problems. You're going to need to give more details in order to reproduce it:

          1. What specific git revision did you apply it to?
          2. Are there other callers in the queue?
          3. Are Local channels involved?
          4. What is the queue configuration?

          Show
          Joshua Colp added a comment - - edited I just did this with 13 from git with no problems. You're going to need to give more details in order to reproduce it: 1. What specific git revision did you apply it to? 2. Are there other callers in the queue? 3. Are Local channels involved? 4. What is the queue configuration?
          Hide
          David Brillert added a comment - - edited

          Looks like I did not apply the patch correctly. After re-applying the patch there is no more crashing during a transfer and the originally reported issue is also resolved. Sorry for the noise.

          Show
          David Brillert added a comment - - edited Looks like I did not apply the patch correctly. After re-applying the patch there is no more crashing during a transfer and the originally reported issue is also resolved. Sorry for the noise.

            People

            • Votes:
              0 Vote for this issue
              Watchers:
              14 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development