asterisk 1.8 ringall strategy in queues causes non-answering agents to exit out of Dial() even with 'g' option

Bug #1086466 reported by James Troup on 2012-12-04
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
asterisk (Ubuntu)
Medium
Unassigned

Bug Description

In asterisk 1.8, calls to queues with a 'ringall' strategy will kill
the Dial() of all non-answering agents as soon as another agent
answers. This kill doesn't respect the 'g' option given to Dial(),
i.e. control is never returned to the dialplan. This appears to be a
regression from asterisk 1.4 which didn't have this behaviour.

It breaks our use of asterisk as we set database variables to reflect
the 'offhook' status of agents, and need to be able to unset them once
the agent's extension is no longer being rung/in use but we can't do
that if Dial() doesn't reliably return control to the dialplan.

Here's some log snippets to demonstrate the problem:

| -- Executing [s@macro-queueexten:4] Dial("Local/1008@agents-969b;2", "SIP/8916,50,rtge") in new stack
| -- Executing [s@macro-queueexten:4] Dial("Local/1002@agents-0e3c;2", "SIP/8914,50,rtge") in new stack

Notice the 'g' option to both dial commands.

| -- Local/1008@agents-969b;1 is ringing
| -- Local/1008@agents-969b;1 connected line has changed. Saving it until answer for SIP/kanbo-0000dcc1
| -- Local/1008@agents-969b;1 connected line has changed. Saving it until answer for SIP/kanbo-0000dcc1
| -- Local/1002@agents-0e3c;1 is ringing
| -- Local/1008@agents-969b;1 is ringing
| -- Local/1002@agents-0e3c;1 connected line has changed. Saving it until answer for SIP/kanbo-0000dcc1
| -- Local/1002@agents-0e3c;1 connected line has changed. Saving it until answer for SIP/kanbo-0000dcc1
| -- Local/1002@agents-0e3c;1 is ringing
| -- SIP/8916-0000dcc2 answered Local/1008@agents-969b;2
| -- Local/1008@agents-969b;1 connected line has changed. Saving it until answer for SIP/kanbo-0000dcc1
| -- Local/1008@agents-969b;1 answered SIP/kanbo-0000dcc1

Here, 1008 answers.

| == Spawn extension (macro-queueexten, s, 4) exited non-zero on 'Local/1002@agents-0e3c;2' in macro 'queueexten'

The 1002 macro dies, but does not execute the 'h' extension or in any
other way return control to the dialplan as requested.

| -- Executing [h@macro-queueexten:1] NoOp("SIP/8916-0000dcc2", "") in new stack

Whereas 1008 does execute 'h'.

| == Spawn extension (macro-queueexten, s, 4) exited non-zero on 'Local/1008@agents-969b;2' in macro 'queueexten'

Robie Basak (racb) wrote :

Sounds like a bug to me. Some thoughts for workarounds. Could ${EXTENSION_STATE(...)}) (when using hints) or ${SIPPEER(...,curcalls)} (if using SIP and call-limit) help you here? 1.6 brought in lots of new shiny stuff like this which eliminated the need for various similar hacks I had to use in previous versions.

Changed in asterisk (Ubuntu):
importance: Undecided → Medium
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers