[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 12:23:34 CST 2015


    [ https://issues.asterisk.org/jira/browse/ASTERISK-24851?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=225261#comment-225261 ] 

David Brillert edited comment on ASTERISK-24851 at 3/6/15 12:22 PM:
--------------------------------------------------------------------

The more I think about this the more I think there is no real bug here.
joinempty = inuse,unavailable,invalid,unknown
leavewhenempty = inuse,unavailable,invalid,unknown,paused

The joinempty settings will allow a caller to join a queue but leavewhenempty must remove the caller since the agent is paused.
There is no other sensible logic to apply...

With these same settings:
Members could be available but the only available agent could pause himself while the caller is still waiting and Asterisk will rightfully remove the caller with EXITEMPTY

Of course this means that the joinempty settings lose precedence to leavewhenempty settings in this scenario.  No other logic could possibly apply.

I'm closing this out as NOT A BUG.


was (Author: aragon):
The more I think about this the more I think there is no real bug here.
joinempty = inuse,unavailable,invalid,unknown
leavewhenempty = inuse,unavailable,invalid,unknown,paused

The joinempty settings will allow a caller to join a queue but leavewhenempty must remove the caller since the agent is paused.
There is no other sensible logic to apply...

With these same settings:
Members could be available but the only available agent could pause himself while the caller is still waiting and Asterisk will rightfully remove the caller with EXITQUEUE

Of course this means that the joinempty settings lose precedence to leavewhenempty settings in this scenario.  No other logic could possibly apply.

I'm closing this out as NOT A BUG.

> 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