Summary:ASTERISK-02864: Call in queue tries twice with 'n' option
Reporter:Andrew Lindh (andrew)Labels:
Date Opened:2004-11-21 11:24:37.000-0600Date Closed:2011-06-07 14:10:27
Versions:Frequency of
From extensions, calls enter queue by: Queue(main,n)

The "main" queue is setup with "strategy=ringall" and "timeout=20". The queue has 10 static members. All on-line members ring at the same time and if no one answers then the call should exit the queue because of the 'n' option and a timeout. But the queue rings the group a second time before exiting after the timeout (total is twice the set timeout).

In the app_queue.c program the 'n' option is only checked and go_on set to 1 if it's already past the timeout. The go_on=1 should be set on the first round (before being >timeout) so it does not try again, but that may have other effects as I have not tried all queue options.

This is a problem because with a 20 second timeout a caller has to wait for the queue to timeout after 40 seconds before going on to the next step (voicemail or IVR). Setting the timeout to half (ie 10 seconds) means that phones (people) getting a call and rejecting it will have to still do so twice and show additional "missed" calls on the phones and CDR.

I uses a queue rather than Dial with & because it is easier to add and remove members and also there is no multiple same extension register support (but that's a different feature request issue).


In app_queue.c procedure try_calling sets the go_on variable based on the 'n' option at about line 1298. Removing the timeout check from the if 'n' statement makes it work as I expect it should...
Comments:By: twisted (twisted) 2004-11-30 00:32:25.000-0600

Could you provide a patch for this?

By: Andrew Lindh (andrew) 2004-11-30 14:09:34.000-0600

I'll upload a diff shortly. But I have not tested it for other conditions yet, only mine.....

I think some new logic should be added for other options, but I'll save that for later.

By: Olle Johansson (oej) 2004-12-13 01:55:56.000-0600

Please reopen this bug report when we have a patch. Otherwise, it stays in archives.