Commit Graph

446 Commits

Author SHA1 Message Date
Mark Michelson
7cc775e1ed Fix crash that would occur if an empty member was specified in queues.conf.
(closes issue #14796)
Reported by: pida



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@185599 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-03-31 22:00:01 +00:00
Mark Michelson
c48480f5e4 Fix some state_interface stuff that was in trunk but not in the backport to 1.4.
Issue #14359 was fixed between the time that I posted the review of the backport
of the state interface change for 1.4. This merges the changes from that issue
back into 1.4.

(closes issue #14359)
Reported by: francesco_r



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@185298 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-03-31 15:34:05 +00:00
Mark Michelson
fd7d3271c6 Fix queue weight behavior so that calls in low-weight queues are not inappropriately blocked.
(This is copied and pasted from the review request I made for this patch)

Asterisk has some odd behavior when queue weights are used. The current logic used when
potentially calling a queue member is:

If the member we are going to call is part of another queue and _that other queue has any 
callers in it_ and has a higher weight than the queue we are calling from, then don't try 
to contact that member. The issue here is what I have marked with underscores. If the 
higher-weighted queue has any callers in it at all, then the queue member will be unreachable 
from the lower-weighted queue. This has the potential to be really really bad if using a 
queue strategy, such as leastrecent or fewestcalls, with the potential to call the same 
member repeatedly.

The fix proposed by garychen on issue 13220 is very simple and, as far as I can see, works 
well for this situation. With this set of changes, the logic used becomes:

If the member we are going to call is part of another queue, the other queue has a higher 
weight than the queue we are calling from, and the higher weight queue has at least as many 
callers as available members, then do not try to contact the queue member. If the higher 
weighted queue has fewer callers than available members, then there is no reason to deny 
the call to this member since the other queue can afford to spare a member.

Since the fix involved writing a generic function for determining the number of available 
members in the queue, I also modified the is_our_turn function to make use of the new 
num_available_members function to determine if it is our turn to try calling a member. There 
is one small behavior change. Before writing this patch, if you had autofill disabled, then 
if you were the head caller in a queue, you would automatically be told that it was your 
turn to try calling a member. This did not take into account whether there were actually any 
queue members available to take the call. Now we actually make sure there is at least one 
member available to take the call if autofill is disabled.

(closes issue #13220)
Reported by: garychen

Review: http://reviewboard.digium.com/r/202/



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@185031 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-03-30 16:17:35 +00:00
Mark Michelson
cf7131dd6a Backport state interface changes to app_queue from trunk.
After several issues raised on the Asterisk bugtracker against
the 1.4 branch were determined to be fixable with the state interface
change available in the 1.6.X series, it finally came time to just
suck it up and backport the change.

For a detailed explanation of what this change entails, the original
trunk commit for this feature may be found here:

http://svn.digium.com/view/asterisk?view=revision&revision=97203

In addition, the details for the use of this change to fix the problems
stated in issue #12970 may be found in the review request I made for
this change. It is linked below.

(closes issue #12970)
Reported by: edugs15

Review: http://reviewboard.digium.com/r/116



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@184980 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-03-30 15:23:59 +00:00
Mark Michelson
ab5b88843c Clarify some documentation of queues.conf.sample
It had always been possible to explicitly specify a "blank"
value for a sound file in queues.conf and have no sound played
back. The problem with this is that it would result in some ugly
CLI warnings from file.c.

This commit introduces a check when playing a file in app_queue
to see if the name of the file is zero-length and return early if
that is the case. Also, the ability to specify the blank sound
files in queues.conf is now mentioned more clearly in queues.conf.sample

(closes issue #14227)
Reported by: caspy




git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@180006 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-03-03 22:48:18 +00:00
Mark Michelson
e7478c7b15 Fix situations where queue members could be autopaused unexpectedly
Specifically, this patch prevents us from autopausing members when
we receive a busy or congestion frame from them.

(closes issue #14376)
Reported by: fiddur
Patches:
      14376.patch uploaded by putnopvut (license 60)
Tested by: fiddur



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@173692 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-02-05 20:29:09 +00:00
Mark Michelson
26658ead16 Fix some crashes from bad datastore handling in app_queue.c
* The queue_transfer_fixup function was searching for and removing
  the datastore from the incorrect channel, so this was fixed.

* Most datastore operations regarding the queue_transfer datastore
  were being done without the channel locked, so proper channel locking
  was added, too.

(closes issue #14086)
Reported by: ZX81
Patches:
      14086v2.patch uploaded by putnopvut (license 60)
Tested by: ZX81, festr



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@168628 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-01-15 00:11:01 +00:00
Steve Murphy
e3700a13a4 This merges the masqpark branch into 1.4
These changes eliminate the need for (and use of)
the KEEPALIVE return code in res_features.c;
There are other places that use this result code
for similar purposes at a higher level, these appear
to be left alone in 1.4, but attacked in trunk.

The reason these changes are being made in 1.4, is
that parking ends a channel's life, in some situations,
and the code in the bridge (and some other places),
was not checking the result code properly, and dereferencing
the channel pointer, which could lead to memory corruption
and crashes.

Calling the masq_park function eliminates this danger 
in higher levels.

A series of previous commits have replaced some parking calls
with masq_park, but this patch puts them ALL to rest,
(except one, purposely left alone because a masquerade
is done anyway), and gets rid of the code that tests
the KEEPALIVE result, and the NOHANGUP_PEER result codes.

While bug 13820 inspired this work, this patch does
not solve all the problems mentioned there.

I have tested this patch (again) to make sure I have
not introduced regressions. 

Crashes that occurred when a parked party hung up
while the parking party was listening to the numbers
of the parking stall being assigned, is eliminated.

These are the cases where parking code may be activated:

1. Feature one touch (eg. *3)
2. Feature blind xfer to parking lot (eg ##700)
3. Run Park() app from dialplan (eg sip xfer to 700)
   (eg. dahdi hookflash xfer to 700)
4. Run Park via manager.

The interesting testing cases for parking are:
I. A calls B, A parks B
    a. B hangs up while A is getting the numbers announced.
    b. B hangs up after A gets the announcement, but 
       before the parking time expires
    c. B waits, time expires, A is redialed,
       A answers, B and A are connected, after
       which, B hangs up.
    d. C picks up B while still in parking lot.

II. A calls B, B parks A
    a. A hangs up while B is getting the numbers announced.
    b. A hangs up after B gets the announcement, but 
       before the parking time expires
    c. A waits, time expires, B is redialed,
       B answers, A and B are connected, after
       which, A hangs up.
    d. C picks up A while still in parking lot.

Testing this throroughly involves acting all the permutations
of I and II, in situations 1,2,3, and 4.

Since I added a few more changes (ALL references to KEEPALIVE in the bridge
code eliimated (I missed one earlier), I retested
most of the above cases, and no crashes.

H-extension weirdness.

Current h-extension execution is not completely
correct for several of the cases.

For the case where A calls B, and A parks B, the
'h' exten is run on A's channel as soon as the park
is accomplished. This is expected behavior.

But when A calls B, and B parks A, this will be
current behavior:

After B parks A, B is hung up by the system, and
the 'h' (hangup) exten gets run, but the channel
mentioned will be a derivative of A's...

Thus, if A is DAHDI/1, and B is DAHDI/2,
the h-extension will be run on channel
Parked/DAHDI/1-1<ZOMBIE>, and the 
start/answer/end info will be those 
relating to Channel A.

And, in the case where A is reconnected to
B after the park time expires, when both parties
hang up after the joyful reunion, no h-exten
will be run at all.

In the case where C picks up A from the 
parking lot, when either A or C hang up,
the h-exten will be run for the C channel.

CDR's are a separate issue, and not addressed
here.

As to WHY this strange behavior occurs, 
the answer lies in the procedure followed
to accomplish handing over the channel
to the parking manager thread. This procedure
is called masquerading. In the process,
a duplicate copy of the channel is created,
and most of the active data is given to the
new copy. The original channel gets its name
changed to XXX<ZOMBIE> and keeps the PBX
information for the sake of the original
thread (preserving its role as a call 
originator, if it had this role to begin
with), while the new channel is without
this info and becomes a call target (a
"peer").

In this case, the parking lot manager
thread is handed the new (masqueraded)
channel. It will not run an h-exten
on the channel if it hangs up while
in the parking lot. The h exten will
be run on the original channel instead,
in the original thread, after the bridge
completes.

See bug 13820 for our intentions as
to how to clean up the h exten behavior.

Review: http://reviewboard.digium.com/r/29/



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@166093 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-12-19 22:30:32 +00:00
Mark Michelson
a391fd9b1c Fix some memory leaks found while looking at how realtime
configs are handled.

Also cleaned up some coding guidelines violations in app_realtime.c,
mostly related to spacing



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@165255 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-12-17 20:51:38 +00:00
Mark Michelson
60c9cae6d6 Revert this cast to long. Using time_t here causes build failures on a
FreeBSD 32-bit build.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@163084 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-12-11 16:46:22 +00:00
Mark Michelson
ef56f0dbd4 Fix a potential crash due to unsafe datastore handling.
This patch also contains a conversion from using long to time_t
for representing times for a queue, as well as some whitespace
fixes.

(closes issue #14060)
Reported by: nivek
Patches:
      datastore_fixup.patch.corrected uploaded by nivek (license 636)
	  with slight modification from me
Tested by: nivek



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@163080 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-12-11 16:24:43 +00:00
Mark Michelson
72a8661580 This change had somehow gotten reverted due to a
completely unrelated commit. Thanks to Theo Belder
on the Asterisk-dev list for pointing this out.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@158306 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-11-21 15:24:19 +00:00
Steve Murphy
fffb7722be A little documentation cross-ref between features and
dial and queue... I wasted some time (stupidly) trying
to get the one-touch parking stuff working, because it
didn't occur to me that I had to also have the corresponding
options in the dial command! Duh! (In all this time, I never
set this up before!)
So, to keep some poor fool from suffering the same fate,
I made the features.conf.sample file mention the corresponding
opts in dial/queue; and the docs for dial/app specifically
mention the corresponding decls in the feature.conf file.

I hope this doesn't spoil some vast, eternal plan...



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@152538 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-10-29 05:19:04 +00:00
Steve Murphy
961bc7e758 The magic trick to avoid this crash is not to
try to find the channel by name in the list,
which is slow and resource consuming, but rather
to pay attention to the result codes from the
ast_bridge_call, to which I added the 
AST_PBX_NO_HANGUP_PEER_PARKED value, which
now are returned when a channel is parked.

If you get AST_PBX_KEEPALIVE,
then don't touch the channel pointer.

If you get AST_PBX_NO_HANGUP_PEER, or
AST_PBX_NO_HANGUP_PEER_PARKED, then don't
touch the peer pointer.

Updated the several places where the results
from a bridge were not being properly obeyed,
and fixed some code I had introduced so that
the results of the bridge were not overridden 
(in trunk).

All the places that previously tested for 
AST_PBX_NO_HANGUP_PEER now have to check for
both AST_PBX_NO_HANGUP_PEER and AST_PBX_NO_HANGUP_PEER_PARKED.

I tested this against the 4 common parking
scenarios:


1. A calls B; B answers; A parks B; B hangs up while A is getting the parking
slot announcement, immediately after being put on hold.

2. A calls B; B answers; A parks B; B hangs up after A has been hung up, but
before the park times out.

3. A calls B; B answers; B parks A; A hangs up while B is getting the parking slot announcement, immediately after being put on hold.

4. A calls B; B answers; B parks A; A hangs up after B has been hung up, but before the park times out.


No crash.

I also ran the scenarios above against valgrind, and accesses looked good.




git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@152535 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-10-29 04:36:32 +00:00
Mark Michelson
3c205d2d3f Update the queue with the correct number of calls and
whether the call was completed within the service level
when a transfer takes place. This way, we do not "break"
the leastrecent and fewestcalls strategies by not logging
a call until after the transferred call has ended.

(closes issue #13395)
Reported by: Marquis
Patches:
      app_queue.c.transfer.patch uploaded by Marquis (license 32)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@149200 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-10-14 22:40:42 +00:00
Mark Michelson
e1b81179dc After working on the ao2_containers branch, I noticed
something a bit strange. In all cases where we provide
a callback function to ao2_container_alloc, the callback
function would only return 0 or CMP_MATCH. After inspecting
the ao2_callback() code carefully, I found that if you're
only looking for one specific item, then you should return
CMP_MATCH | CMP_STOP. Otherwise, astobj2 will continue
traversing the current bucket until the end searching for
more matches.

In cases like chan_iax2 where in 1.4, all the peers are
shoved into a single bucket, this makes for potentially
terrible performance since the entire bucket will be
traversed even if the peer is one of the first ones come
across in the bucket.

All the changes I have made were for cases where the 
callback function defined was passed to ao2_container_alloc
so that calls to ao2_find could find a unique instance
of whatever object was being stored in the container.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@140488 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-08-29 17:34:17 +00:00
Mark Michelson
6f9bd7d072 Change the inequalities used in app_queue with regards
to timeouts from being strict to non-strict for more
accuracy.

(closes issue #13239)
Reported by: atis
Patches:
      app_queue_timeouts_v2.patch uploaded by atis (license 242)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@138685 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-08-18 20:01:14 +00:00
Tilghman Lesher
925996df48 Update persistent state on all exit conditions.
(closes issue #12916)
 Reported by: sgenyuk
 Patches: 
       app_queue.patch.txt uploaded by neutrino88 (license 297)
 Tested by: sgenyuk, aragon


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@136488 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-08-07 16:50:47 +00:00
Mark Michelson
7dcb58af43 We only need to unregister the QueueStatus manager
command once on an unload



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@136238 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-08-06 20:42:15 +00:00
Mark Michelson
f51e53921c Add more timeout checks into app_queue, specifically
targeting areas where an unknown and potentially
long time has just elapsed. Also added a check
to try_calling() to return early if the timeout
has elapsed instead of potentially setting a negative
timeout for the call (thus making it have *no* timeout
at all).


(closes issue #13186)
Reported by: miquel_cabrespina
Patches:
      13186.diff uploaded by putnopvut (license 60)
Tested by: miquel_cabrespina



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@134758 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-07-31 15:56:18 +00:00
Mark Michelson
592497392b Move the init_queue call back to where it used to be (changed
Sept 12 last year). It was moved then to prevent a memory leak.
Since then, the same memory leak recurred and was fixed in a 
better way.

Now it has been found that the placement of this init_queue
call can cause problems if a realtime queue has values changed
to an empty string. The problem is that the default value
for that queue parameter would not be set.

(closes issue #13084)
Reported by: elbriga



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@131369 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-07-16 20:23:02 +00:00
Mark Michelson
47924ba64d Apparently, "thread safety" is important, whatever
that means. :P

(Thanks Russell!)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@131357 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-07-16 19:37:08 +00:00
Mark Michelson
e10908c6d2 Make absolutely certain that the transfer datastore
is removed from the calling channel once the caller
is finished in the queue. This could have weird con-
sequences when dialing local queue members when multiple
transfers occur on a single call.

Also fixed a memory leak that would occur when an
attended transfer occurred from a queue member.

(closes issue #13047)
Reported by: festr



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@131299 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-07-16 18:57:34 +00:00
Mark Michelson
28004bb651 Add the interface of a queue member to the output of the "queue show" command
so that it can easily be associated with a queue member's name. This helps
so that the appropriate queue member can be removed or paused since the 
interface is required, not the member's name.

(closes issue #12783)
Reported by: davevg
Patches:
      app_queue.diff uploaded by davevg (license 209) with small mod from me



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@125585 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-06-26 22:52:39 +00:00
Mark Michelson
3d2bc51957 Backport of attended transfer queue_log patch from trunk.
This patch allows for attended transfers to be logged in the
queue_log the same way that blind transfers have always been.

It was decided by popular opinion on the asterisk-dev mailing
list that this should be backported to 1.4. Thanks to everyone
who gave an opinion.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@125530 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-06-26 22:02:55 +00:00
Mark Michelson
033e0392e7 Prior to this patch, the "queue show" command used cached
information for realtime queues instead of giving up-to-date
info. Now realtime is queried for the latest and greatest in
queue info.

(closes issue #12858)
Reported by: bcnit
Patches:
      queue_show.patch uploaded by putnopvut (license 60)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@125476 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-06-26 20:56:01 +00:00
Mark Michelson
d7fbc9aae2 davidw pointed out that the holdtime calculation used by
app_queue does not use "boxcar" filtering as the comments
say. The term "boxcar" means that the number of samples used
to calculate stays constant, with new samples replacing the
oldest ones. The queue holdtime calculation uses all holdtime
samples collected since the queue was loaded, so the comment
has been changed to be accurate.

(closes issue #12781)
Reported by: davidw



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@123274 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-06-17 15:56:55 +00:00
Jeff Peeler
f9818af8dd Adds DAHDI support alongside Zaptel. DAHDI usage favored, but all Zap stuff should continue working. Release announcement to follow.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@122314 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-06-12 19:08:20 +00:00
Mark Michelson
9f669a3a09 Properly play a holdtime message if the announce-holdtime option is
set to "once."

(closes issue #12842)
Reported by: ramonpeek
Patches:
      patch001.diff uploaded by ramonpeek (license 266)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@122311 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-06-12 18:50:58 +00:00
Mark Michelson
d600851f16 Make sure that the string we set will survive the unref of
the queue member.

Thanks to Russell, who pointed this out.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@120513 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-06-04 22:05:33 +00:00
Mark Michelson
f145259724 Tab completion when removing a member should give the member's interface,
not the name, since the interface is what is expected for the command.

(closes issue #12783)
Reported by: davevg



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@120285 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-06-04 14:11:12 +00:00
Tilghman Lesher
c9ddda2b1f When joinempty=strict, it only failed on join if there were busy members. If
all members were logged out OR paused, then it (incorrectly) let callers join
the queue.
(closes issue #12451)
 Reported by: davidw


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@119404 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-05-30 21:17:45 +00:00
Mark Michelson
1eee42a78a Don't consider a caller "handled" until the caller is bridged with
a queue member. There was too much of an opportunity for the member
to hang up (either during a delay, announcement, or overly long
agi) between the time that he answered the phone and the time when
he actually was bridged with the caller. The consequence of this
was that if the member hung up in that interval, then proper
abandonment details would not be noted in the queue log if the caller
were to hang up at any point after the member hangup.

(closes issue #12561)
Reported by: ablackthorn



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@115320 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-05-05 21:41:34 +00:00
Mark Michelson
b066825d56 Use the MACRO_CONTEXT and MACRO_EXTEN channel variables instead of the channel's macrocontext
and macroexten fields. This is needed because if macros are daisy-chained, the incorrect 
context and extension are placed on the new channel. I also added locking to the channel prior
to accessing these variables as noted in trunk's janitor project file.


(closes issue #12549)
Reported by: darren1713
Patches:
      app_queue.c.macroextenpatch uploaded by darren1713 (license 116)
	       (with modifications from me)
Tested by: putnopvut



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@114848 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-04-29 19:40:06 +00:00
Mark Michelson
44c157b36a Output of channel variables when eventwhencalled=vars was set
was being truncated two characters. This patch corrects the
problem.

(closes issue #12493)
Reported by: davidw



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@114628 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-04-24 20:43:03 +00:00
Jason Parker
e4d2e03956 Allow autofill to work in the general section of queues.conf.
Additionally, don't try to (re)set options when they have empty values in realtime (all unset columns would have an empty value).

(closes issue #12445)
Reported by: atis
Patches:
      12445-autofill.diff uploaded by qwell (license 4)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@114133 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-04-15 16:18:08 +00:00
Mark Michelson
f1683753b8 If the datastore has been moved to another channel due to a masquerade, then
freeing the datastore here causes an eventual double free when the new channel
hangs up. We should only free the datastore if we were able to successfully remove
it from the channel we are referencing (i.e. the datastore was not moved).

(closes issue #12359)
Reported by: pguido



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@114112 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-04-14 16:24:22 +00:00
Mark Michelson
63968e3d5d Ensure that there is no timeout if none is specified.
(closes issue #12349)
Reported by: johnlange



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@112393 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-04-02 14:32:00 +00:00
Mark Michelson
89c3cd6842 This patch makes it so that all queue member status changes are handled through device state
code. This removes several problems people were seeing where their queue members would get into
an "unknown" state. Huge props go to atis on this one since he was the one who found the code
section that was causing the problem and proposed the solution. I just wrote what he suggested :)

(closes issue #12127)
Reported by: atis
Patches:
      12127v3.patch uploaded by putnopvut (license 60)
Tested by: atis, jvandal



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@109713 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-03-18 20:52:15 +00:00
Mark Michelson
c6387c3540 When using autofill, members who are in use should be counted towards the
number of available members to call if ringinuse is set to yes.

Thanks to jmls who brought this issue up on IRC



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@105059 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-02-28 20:11:57 +00:00
Mark Michelson
70b222e46f Clear up confusion when viewing the QUEUE_WAITING_COUNT of a
"dead" realtime queue. Since from the user's perspective, the queue
does exist, we shouldn't tell them we couldn't find the queue. Instead
since it is a dead queue, report a 0 waiting count

This issue was brought up on IRC by jmls



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@103956 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-02-20 22:32:22 +00:00
Mark Michelson
cb8ffc789e Prevent a potential three-thread deadlock. Also added a comment block
to explicitly state the locking order necessary inside app_queue.

(closes issue #11862)
Reported by: flujan
Patches:
      11862.patch uploaded by putnopvut (license 60)
	  Tested by: flujan



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@103120 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-02-08 18:48:17 +00:00
Mark Michelson
2e4650c242 Fix a logic error with regards to autofill. Prior to this change, it was possible
for a caller to go out of turn if autofill were enabled and callers ahead in the queue were attempting
to call a member. This change fixes this.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@101216 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-30 15:23:00 +00:00
Mark Michelson
da3e5f571a Remove a memory leak from updating realtime queues
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@101035 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-29 23:02:03 +00:00
Mark Michelson
ad19e1c4b6 Fixing an erroneous return value returned when attempting to pause or unpause a queue member
fails.

Fixes BE-366, thanks to John Bigelow for writing the patch.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@100973 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-29 19:39:00 +00:00
Mark Michelson
8e3c058e44 Fixing another compilation error. I'm a bit off today :(
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@98737 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-14 16:35:12 +00:00
Mark Michelson
1a95cfaf45 Oops. Last commit had compilation error.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@98734 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-14 16:30:33 +00:00
Mark Michelson
aa320d23a9 Adding explicit defaults for missing options to init_queue. This is necessary because
if a user either removes or comments one of these options and reloads their queues, the
option will not reset to its default, instead maintaining the value from prior to the 
reload. 

Thanks to John Bigelow for pointing this error out to me.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@98733 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-14 16:21:28 +00:00
Mark Michelson
2da89b6120 Part 2 of app_queue doxygen improvements. Some smaller functions this time
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@97575 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-09 18:48:15 +00:00
Mark Michelson
34f994f017 use the \retval doxygen command properly
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@97308 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-09 00:17:40 +00:00