Summary:ASTERISK-15211: [patch] When using 'joinempty=strict', "in use" devices not seen as "unavailable".
Reporter:jiddings (jiddings)Labels:
Date Opened:2009-11-24 17:19:09.000-0600Date Closed:2011-04-26 07:30:29
Versions:Frequency of
Environment:Attachments:( 0) app_queue.c.diff
Description:This may not be a bug, but rather just a misunderstanding of the concept of what 'unavailable' means, however..

When an agent was on another call (in use) but using joinempty=strict, the caller was able to join the queue. My layman interpretation of unavailable would be unable to accept a call, regardless of their status -- invalid, unavailable, paused, or in use.


I was able to correct this behavior by slightly modifying app_queue.c -- below is the code.

If this is the intended result, then my apologies for wasting your time. If it was an oversight, I look forward to seeing it patched in future revisions. :)


---app_queue.c.diff--- # start line 574
> ao2_ref(member, -1);
> break;
Comments:By: David Woolley (davidw) 2009-11-25 06:18:49.000-0600

Please resubmit the patch as a licensed attachment, as Digium cannot look at code that is not submitted in that way and I don't want to start looking at code that Digium cannot look at.

As a general note, the intended behaviour of, in particular, leave empty, is not useful in difficult cases and there is a new, more general, way of specifying the conditions in something like 1.6.2 (may be later).

By: David Woolley (davidw) 2009-11-25 06:25:24.000-0600

Going on the title only, if join empty rejected calls for devices which were in use, you would not have a queue at all, as calls would only be accepted if they could be immediately offered to a member.

By: jiddings (jiddings) 2009-11-25 11:53:11.000-0600

I uploaded the code with a release, but they said it had to be approved.


By: David Woolley (davidw) 2009-11-26 09:43:00.000-0600

My previous comment still stands.   Unavailable means not registered, or powered down.  In use means in a call, including a call resulting from the use of a queue.  I believe the intent of the option is to cover the case where there is no immediate prospect of the call being handled, not cases where all agents are temporarily busy on calls.

If you want to get an effect like using the queue for ACD but not allowing any queueing, you could try setting a trivial timeout of 1 second.

By: jiddings (jiddings) 2009-11-26 09:48:29.000-0600

I notice has an 'inuse' option for joinempty -- don't suppose it's feasible to backport that to 1.4, eh?

By: Leif Madsen (lmadsen) 2009-12-01 12:39:45.000-0600

This functionality seems to exist in later versions of Asterisk. Yes, it is feasible to backport this, but this is not the appropriate forum for that request. Issue closed.