[asterisk-bugs] [JIRA] (ASTERISK-24851) Asterisk checks both joinempty and leavewhenempty settings before caller enters queue and if a match is found in either executes EXITEMPTY

David Brillert (JIRA) noreply at issues.asterisk.org
Fri Mar 6 10:19:35 CST 2015


David Brillert created ASTERISK-24851:
-----------------------------------------

             Summary: Asterisk checks both joinempty and leavewhenempty settings before caller enters queue and if a match is found in either executes EXITEMPTY
                 Key: ASTERISK-24851
                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-24851
             Project: Asterisk
          Issue Type: Bug
      Security Level: None
          Components: Applications/app_queue
    Affects Versions: 11.16.0
         Environment: CentOS 5 64 bit
            Reporter: David Brillert


This is very easy to reproduce.
In queues.conf save the following:
joinempty =  inuse,unavailable,invalid,unknown
leavewhenempty =  inuse,unavailable,invalid,unknown,paused

Login an agent, then pause the agent.
Call the queue and caller will be removed with EXITQUEUE and will not be allowed to join the queue even though joinempty does not include paused.

According to sample queues.conf file Asterisk is supposed to check each heading independantly, but it checks both on queue join.

>From the sample file:

; ---------------------- Queue Empty Options ----------------------------------
;
; Asterisk has provided the "joinempty" and "leavewhenempty" options for a while
; with tenuous definitions of what they actually mean. The "joinempty" option controls
; whether a caller may join a queue depending on several factors of member availability.
; Similarly, then leavewhenempty option controls whether a caller may remain in a queue
; he has already joined. Both options take a comma-separated list of factors which
; contribute towards whether a caller may join/remain in the queue. The list of
; factors which contribute to these option is as follows:
;
; paused: a member is not considered available if he is paused
; penalty: a member is not considered available if his penalty is less than QUEUE_MAX_PENALTY
; inuse: a member is not considered available if he is currently on a call
; ringing: a member is not considered available if his phone is currently ringing
; unavailable: This applies mainly to Agent channels. If the agent is a member of the queue
;              but has not logged in, then do not consider the member to be available
; invalid: Do not consider a member to be available if he has an "invalid" device state.
;          This generally is caused by an error condition in the member's channel driver.
; unknown: Do not consider a member to be available if we are unable to determine the member's
;          current device state.
; wrapup: A member is not considered available if he is currently in his wrapuptime after
;         taking a call.
;
; For the "joinempty" option, when a caller attempts to enter a queue, the members of that
; queue are examined. If all members are deemed to be unavailable due to any of the conditions
; listed for the "joinempty" option, then the caller will be unable to enter the queue. For the
; "leavewhenempty" option, the state of the members of the queue are checked periodically during
; the caller's stay in the queue. If all of the members are unavailable due to any of the above
; conditions, then the caller will be removed from the queue.
;
; Some examples:
;
;joinempty = paused,inuse,invalid
;
; A caller will not be able to enter a queue if at least one member cannot be found
; who is not paused, on the phone, or who has an invalid device state.
;
;leavewhenempty = inuse,ringing
;
; A caller will be removed from the queue if at least one member cannot be found
; who is not on the phone, or whose phone is not ringing.




--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list