[asterisk-bugs] [Asterisk 0012690]: [patch] Queue timeout terminates call attempt, causing partial ring
noreply at bugs.digium.com
noreply at bugs.digium.com
Tue May 27 12:32:26 CDT 2008
A NOTE has been added to this issue.
======================================================================
http://bugs.digium.com/view.php?id=12690
======================================================================
Reported By: atis
Assigned To: putnopvut
======================================================================
Project: Asterisk
Issue ID: 12690
Category: Applications/app_queue
Reproducibility: always
Severity: minor
Priority: normal
Status: feedback
Asterisk Version: 1.4.19
SVN Branch (only for SVN checkouts, not tarball releases): N/A
SVN Revision (number only!):
Disclaimer on File?: N/A
Request Review:
======================================================================
Date Submitted: 05-20-2008 11:25 CDT
Last Modified: 05-27-2008 12:32 CDT
======================================================================
Summary: [patch] Queue timeout terminates call attempt,
causing partial ring
Description:
If queue timeout occurs while queue is trying to ring member, call attempt
is terminated, not executing any instructions further, and causing partial
ring, which can sometimes be even one second.
After discussion with putnopvut on irc, we came to conclusion that this is
bug.
======================================================================
----------------------------------------------------------------------
putnopvut - 05-27-08 12:32
----------------------------------------------------------------------
My thinking is that if someone truly wanted infinite ring time to a queue
member, then they would set the timeout=0 in queues.conf and they would not
specify a timeout parameter when calling Queue().
For your situation, it makes sense to do what you are doing since you
specify a timeout to Dial for the queue member. The problem is that we
can't make those sorts of assumptions in app_queue since there are lots of
people not using Local channels for their queue members. For them, if they
want to ring a single queue member for a specified time and then exit the
queue if that time expires, they have two potential ways of doing it.
1. Set the timeout in queues.conf to be a certain time and then pass the
'n' option to Queue().
2. Set the timeout in queues.conf to 0 and then pass a timeout parameter
to Queue().
The difference in the two is that you can vary the timeout if you use
method 2. You can't do that if you use method 1.
What I would suggest is that the behavior of timeouts is already a bit
ambiguous and people may have different intentions by setting the various
timeouts different ways, we create an option in queues.conf which will tell
app_queue if it should take the timeout passed to Queue() into
consideration when calculating the amount of time to ring a member. The
option could be something like
allowpartialring = yes|no
Yes is the default, which will behave the way app_queue does right now. If
set to no, then it would cause the timeout specified in queues.conf to
always be used when calculating the amount of time to ring a member's
phone. The only way the timeout passed to Queue() would be used in this
situation is between attempts to ring members.
In the situation you reported initially, if you set allowpartialring=no,
then app_queue would think that it should ring the queue member for an
infinite period of time (assuming you have timeout=0 in queues.conf). This
way, the 14 second timeout will not be taken into account when dialing the
queue member. Instead, the 15 second timeout provided to Dial() will
instead take effect.
Issue History
Date Modified Username Field Change
======================================================================
05-27-08 12:32 putnopvut Note Added: 0087378
======================================================================
More information about the asterisk-bugs
mailing list