[Home]

Summary:ASTERISK-09316: Only delivery calls to Not in use users.
Reporter:Fernando Lujan (flujan)Labels:
Date Opened:2007-04-25 15:31:03Date Closed:2011-06-07 14:03:17
Priority:MajorRegression?No
Status:Closed/CompleteComponents:Applications/app_queue
Versions:Frequency of
Occurrence
Related
Issues:
Environment:Attachments:( 0) bug.txt
( 1) queues.conf.txt
Description:Actaully asterisk is trying to delivery calls even to In Use channels. The correct to a queue is to delivery it only to Not in Use users.

It is possible to add this feature?

Thanks
Comments:By: Fernando Lujan (flujan) 2007-04-25 16:27:10

With this problem, asterisk tries to deliver a call to In use members, which actually reject the calls. Depending on the strategy asterisk loose a lot of time trying to deliver a new call. Due to the FIFO nature, the another calls queued lost a long time wating to be connected.

My sugestion is to remove the In Use members from the strategy decision. With that, the decision will be doen using only the Not in Use/Available members of the queue, becoming more fast.



By: Joshua C. Colp (jcolp) 2007-04-25 20:13:57

Can you please provide console output, configuration information, and anything else? As far as I know if things are properly setup this shouldn't happen.

By: Fernando Lujan (flujan) 2007-04-25 20:24:55

Here is my queues.conf file. All users are using X-Lite v3.0. Which information do you need from CLI?

Will show queue output be enough?

All sip members are configured like this:

[general]
rtptimeout=20
rtpholdtimeout=10
notifyringing=yes
musicclass=default
[83299]
type=friend
call-limit=1
qualify=yes
host=dynamic
context=sip

Thanks.

By: Eliel Sardanons (eliel) 2007-04-26 11:05:38

I'm having the same problem, but I didn't report it because I couldn't see the bug in the code and I don't know if this is a configuration problem.

This is what the CLI shows while a call is on a queue

Really destroying SIP dialog '51b8f5af4b004f1c45e7e82551f62f7d@192.168.2.123' Method: INVITE

One for each queue member in a Unavailable state!!.

I have the same Member config as flujan, the queue strategy is rrmemory with autofill enabled.

And app_queue sends QueueMemberState Events for each try, telling me that Member :X is Unavailable.

I'm trying to figure out why this is happening, if you need more information, please let me know.

By: Eliel Sardanons (eliel) 2007-04-26 11:06:35

Sorry for my mistake but I'm trying this on Asterisk 1.4.1.

By: Fernando Lujan (flujan) 2007-04-27 14:57:20

Please, refer to bug.txt to see the bug happening on member SIP/84203.

By: Wolfgang Pichler (wuwu) 2007-05-07 23:53:57

We are running the autofill patch against a asterisk 1.2.4 - and we do have the same problem here. We do also use penelty - so on each call asterisk is going from the first agent - until one of the last - trying to reach them - which does really costs time...

By: drrt (drrt) 2007-05-08 03:43:20

can you provide with content of your queues.conf file?

By: Wolfgang Pichler (wuwu) 2007-05-08 10:27:40

i have now takken a look at the app_queue source - and it seems that the problem is located at the try_calling function. There is a while loop "while(cur)" which loops through each queue member - and does calculate the queue metrics for each queue member (it does construct a new single linked list of members to try to put the call on). We could add a simple status check for each member - so that only members with status=(AST_DEVICE_NOT_INUSE || AST_DEVICE_UNKNOWN) are getting added.
The other possible solution would be to add an extra check at the ring_entry function, the ring_entry function does try to ring one specific member. The ring_entry function does already check for wraupuptime, member pause and the weight - so one extra check for the current member status would be no problem.

What are you thinking ?

And why are the checks in the ring_entry function - instead of the try_calling funtion when build the list of members to try to dial ?

By: Eliel Sardanons (eliel) 2007-05-08 10:39:46

In ring_entry they are checking that condition:

if (!qe->parent->ringinuse && (tmp->member->status != AST_DEVICE_NOT_INUSE) && (tmp->member->status != AST_DEVICE_UNKNOWN)) {
...
       return 0;
}

By: Wolfgang Pichler (wuwu) 2007-05-08 10:54:16

then i think this check is not included in the 1.2.4 version of asterisk...

sorry for not looking at the current version before posting - i think i will patch my 1.2.4 version with the ringinuse check to get it working for me...

By: Leif Madsen (lmadsen) 2007-05-14 14:47:11

Sounds like you want the 'autofill' feature, which exists in 1.4, but not in 1.2. It is possible some back ports exist on the Internet.