summaryrefslogtreecommitdiff
path: root/apps/app_queue.c
AgeCommit message (Collapse)Author
2012-11-07Multiple revisions 375993-375994Mark Michelson
........ r375993 | mmichelson | 2012-11-07 11:01:13 -0600 (Wed, 07 Nov 2012) | 30 lines Fix misuses of timeouts throughout the code. Prior to this change, a common method for determining if a timeout was reached was to call a function such as ast_waitfor_n() and inspect the out parameter that told how many milliseconds were left, then use that as the input to ast_waitfor_n() on the next go-around. The problem with this is that in some cases, submillisecond timeouts can occur, resulting in the out parameter not decreasing any. When this happens thousands of times, the result is that the timeout takes much longer than intended to be reached. As an example, I had a situation where a 3 second timeout took multiple days to finally end since most wakeups from ast_waitfor_n() were under a millisecond. This patch seeks to fix this pattern throughout the code. Now we log the time when an operation began and find the difference in wall clock time between now and when the event started. This means that sub-millisecond timeouts now cannot play havoc when trying to determine if something has timed out. Part of this fix also includes changing the function ast_waitfor() so that it is possible for it to return less than zero when a negative timeout is given to it. This makes it actually possible to detect errors in ast_waitfor() when there is no timeout. (closes issue ASTERISK-20414) reported by David M. Lee Review: https://reviewboard.asterisk.org/r/2135/ ........ r375994 | mmichelson | 2012-11-07 11:08:44 -0600 (Wed, 07 Nov 2012) | 3 lines Remove some debugging that accidentally made it in the last commit. ........ Merged revisions 375993-375994 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 375995 from http://svn.asterisk.org/svn/asterisk/branches/10 ........ Merged revisions 376014 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@376015 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-10-29Ensure that CDRs for a caller in a Queue that is not answered is NO ANSWER.Matthew Jordan
When a caller enters a queue and no queue member answers the call, the current behaviour can be a little odd depending on the paused status of the queue members. If any queue member is paused, but not all, the CDR disposition will be BUSY. If all queue members are paused, then the CDR disposition is based instead on the disposition of the call prior to entering the Queue. This patch modifies the behaviour in the following ways: * If no queue members are paused, the CDR disposition is whatever the disposition was prior to going into Queue. If the call was answered this will be ANSWERED; otherwise, it is NO ANSWER. * If some queue members are pused, the CDR result is NO ANSWER. (This is a change in behaviour, as the result would previously have been BUSY) * If all queue members are paused, the CDR result is whatever the result was prior to going into Queue. This is the same as the behaviour prior to this patch. * If the caller hangs up, times out, or presses '*' with the 'h' option, the CDR disposition is again not set and is dependent on whether or not the caller was Answered prior to entering Queue. This patch was based on one provided by Thomas Arimont, but has been modified to accomodate findings by the reviewers. Review: https://reviewboard.asterisk.org/r/2064/ (closes issue AST-906) Reported by: Thomas Arimont (closes issue ASTERISK-17776) Reported by: Attila Megyeri git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@375416 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-10-18app_queue: Make ordering of rrmemory/rrordered persist over add/remove membersJonathan Rose
Prior to this patch, adding, removing or reloading members to rrmemory would cause the order to become completely jumbled. Now it behaves more or less like rrordered other than the fact that it stores the members on a hash table rather than a linked list. This patch also prevents removal of members and member reloads from jumbling rrordered queues. (issue AST-989) Reported by: Thomas Arimont Review: https://reviewboard.asterisk.org/r/2164/ ........ Merged revisions 375216 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 375217 from http://svn.asterisk.org/svn/asterisk/branches/10 ........ Merged revisions 375219 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@375240 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-10-14Doxygen Updates - Title updateAndrew Latham
Update and extend the configuration_file group and enable linking to the application. Update title that was left behind many years ago. (issue ASTERISK-20259) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@375004 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-10-10app_queue: Made pass connected line updates from the caller to ringing queue ↵Richard Mudgett
members. Party A calls Party B Party B puts Party A on hold. Party B calls a queue. Ringing queue member D sees Party B identification. Party B transfers Party A to the queue. Queue member D does not get a connected line update for Party A. Queue member D answers the call and still sees Party B information. However, if Party A later transfers the call to Party C then queue member D gets a connected line update for Party C. * Made pass connected line updates from the caller to queue members while the queue members are ringing. (closes issue AST-1017) Reported by: Thomas Arimont (closes issue ABE-2886) Reported by: Thomas Arimont Tested by: rmudgett ........ Merged revisions 374801 from https://origsvn.digium.com/svn/asterisk/be/branches/C.3-bier ........ Merged revisions 374802 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 374803 from http://svn.asterisk.org/svn/asterisk/branches/10 ........ Merged revisions 374804 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@374805 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-10-01Doxygen CleanupAndrew Latham
Start adding configuration file linking and pages. Add module loading doxygen block. (issue ASTERISK-20259) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@374164 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-10-01app_queue: Support persisting and loading of long member lists.Sean Bright
Greenlight in #asterisk brought up that he was receiving an error message "Could not create persistent member string, out of space" when running app_queue in Asterisk 10. dump_queue_members() made an assumption that 8K would be enough to store the generated string, but with queues that have large member lists this is not always the case. This patch removes the limitation and uses ast_str instead of a fixed sized buffer. The complicating factor comes from the fact that ast_db_get requires a buffer and buffer size argument, which doesn't let us pull back more than what we pass in, so I introduced a new ast_db_get_allocated() which returns an ast_strdup()'d copy of the value from astdb. As an aside, I did some testing on the maximum size of data that we can store in the BDB library we distribute and was able to store a 10MB string and retrieve it with no problems, so I feel this is a safe patch. Review: https://reviewboard.asterisk.org/r/2136/ ........ Merged revisions 374108 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 374135 from http://svn.asterisk.org/svn/asterisk/branches/10 ........ Merged revisions 374150 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@374151 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-09-26app_queue: 'agent available' hint, cleanup restart, and initial stateAlec L Davis
Fix previously untested senarios; 1). On queue initialisation set queue_avail devstate to INUSE. Previously was unavailable, which indicated an agent was available. 2). When removing members, if there are no other members available, set queue_avail to INUSE. Previously, if a member interface had become 'unavailable', they were never going to be removed, particularly when persistant queues is enabled. 3). When adding a member, check that they are available, if they are set queue_avail to NOT_INUSE. Previously on reloaded, members may have been 'unavailable'. 4). When pausing or unpausing a member, set appropriate queue availability. alecdavis (license 585) Reported by: Alec Davis Tested by: alecdavis Review: https://reviewboard.asterisk.org/r/2129/ ........ Merged revisions 373804 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@373805 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-09-25"show" completion option for "queue" shouldn't appear twiceKinsey Moore
When tab-completing CLI commands starting with "queue", "show" appeared twice in the list due to the way that Asterisk's tab completion functions and the order in which the commands were registered. The registration order has been altered to resolve this issue. (closes issue AST-940) Reported-by: Steve Pitts ........ Merged revisions 373666 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 373675 from http://svn.asterisk.org/svn/asterisk/branches/10 ........ Merged revisions 373688 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@373689 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-09-22Doxygen Updates Janitor WorkAndrew Latham
* Whitespace, doc-blocks, spelling, case, missing and incorrect tags. * Add cleanup to Makefile for the Doxygen configuration update * Start updating Doxygen configuration for cleaner output * Enable inclusion of configuration files into documentation * remove mantisworkflow... * update documentation README * Add markup to Tilghman's email and talk with him about updating his email, he knows... * no code changes on this commit other than the mentioned Makefile change (issue ASTERISK-20259) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@373384 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-09-21app_queue: Make queue reload members and variants of that workJonathan Rose
Prior to this patch, 'queue reload members' cli command did not work at all. This also affects the manager function 'QueueReload' when supplied with the 'members: yes' field. (closes issue AST-956) Reported by: John Bigelow ........ Merged revisions 373298 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 373300 from http://svn.asterisk.org/svn/asterisk/branches/10 ........ Merged revisions 373318 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@373319 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-09-20Add queue monitoring hintsMatthew Jordan
This patch adds support for hints on a queue. Hints can be added using the nomenclature 'Queue:name', where name is the name of the queue being monitored. This nifty feature was done by Alec Davis. Review: https://reviewboard.asterisk.org/r/1619 Reported by: Alec Davis Tested by: alecdavis patches: review1619.diff2 by alecdavis (license 585) ........ Merged revisions 373235 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@373239 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-09-20Support all ways a member can be available for 'agent available' hintsMatthew Jordan
Alec's patch in r373188 added the ability to subscribe to a hint for when Queue members are available. This patch modifies the check that determines when a Queue member is available by refactoring the availability checks in num_available_members into a shared function is_member_available. This should now handle the ringinuse option, as well as device state values other than AST_DEVICE_NOT_INUSE. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@373222 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-09-19app_queue: Support an 'agent available' hintAlec L Davis
Sets INUSE when no free agents, NOT_INUSE when an agent is free. modifes handle_statechange() scan members loop to scan for a free agent and updates the Queue:queuename_avial devstate. Previously exited early if the member was found in the queue. Now Exits later when both a member was found, and a free agent was found. alecdavis (license 585) Reported by: Alec Davis Tested by: alecdavis Review: https://reviewboard.asterisk.org/r/2121/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@373188 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-09-07Fix exception path typo in app_queue.c try_calling().Richard Mudgett
(closes issue ASTERISK-20380) Reported by: Jeremy Pepper Patches: fix-local-channel-locking.patch (license #6350) patch uploaded by Jeremy Pepper ........ Merged revisions 372624 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 372625 from http://svn.asterisk.org/svn/asterisk/branches/10 ........ Merged revisions 372626 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@372627 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-09-06Update QueueMemberStatus event documentation to include member status valuesMatthew Jordan
The Status: header in a QueueMemberStatus event (and other QueueMember* events) is the numeric value of the device state corresponding to that Queue Member. As those values are not exactly obvious, listing them in the documentation is useful. Matt Riddell reported this indirectly through the wiki page. (closes issue ASTERISK-20243) Reported by: Matt Riddell ........ Merged revisions 372531 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@372538 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-09-06Ensure listed queues are not offered for completionKinsey Moore
When using tab-completion for the list of queues on "queue reset stats" or "queue reload {all|members|parameters|rules}", the tab-completion listing for further queues erroneously listed queues that had already been added to the list. The tab-completion listing now only displays queues that are not already in the list. (closes issue AST-963) Reported-by: John Bigelow ........ Merged revisions 372517 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 372518 from http://svn.asterisk.org/svn/asterisk/branches/10 ........ Merged revisions 372519 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@372520 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-09-06Ensure "rules" is tab-completable for "queue show"Kinsey Moore
Previously, tabbing at the end of "queue show" produced a list of available queues about which information could be shown, but did not include an alternative command, "rules", to access information about queue rules. The "rules" item should now be shown in the list of tab-completable items. (closes issue AST-958) Reported-by: John Bigelow ........ Merged revisions 372444 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 372445 from http://svn.asterisk.org/svn/asterisk/branches/10 ........ Merged revisions 372446 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@372447 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-09-04app_queue: Only log PAUSEALL/UNPAUSEALL when 1+ memebers changed.Jonathan Rose
Prior to this patch, if pause or unpause was issued on an interface without specifying a specific queue, a PAUSEALL or UNPAUSEALL event would be logged in the queue log even if that interface wasn't a member of any queues. This patch changes it so that these events are only logged when at least one member of any queue exists for that interface. (closes issue AST-946) Reported by: John Bigelow Review: https://reviewboard.asterisk.org/r/2079/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@372148 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-08-30Prevent crash on shutdown due to refcount error on queues container.Mark Michelson
When app_queue is unloaded, the queues container has its refcount decremented, potentially to 0. Then the taskprocessor responsible for handling device state changes is unreferenced. If the taskprocessor happens to be just about to run its task, then it will create and destroy an iterator on the queues container. This can cause the refcount on the queues container to increase to 1 and then back to 0. Going back to 0 a second time results in double frees. This failure was seen periodically in the testsuite when Asterisk would shut down. ........ Merged revisions 372089 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 372090 from http://svn.asterisk.org/svn/asterisk/branches/10 ........ Merged revisions 372091 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@372092 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-08-30Help prevent ringing queue members from being rung when ringinuse set to no.Mark Michelson
Queue member status would not always get updated properly when the member was called, thus resulting in the member getting multiple calls. With this change, we update the member's status at the time of calling, and we also check to make sure the member is still available to take the call before placing an outbound call. (closes issue ASTERISK-16115) reported by nik600 Patches: app_queue.c-svn-r370418.patch uploaded by Italo Rossi (license #6409) ........ Merged revisions 372048 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 372049 from http://svn.asterisk.org/svn/asterisk/branches/10 ........ Merged revisions 372050 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@372051 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-08-21Fix misuses of asprintf throughout the code.Mark Michelson
This fixes three main issues * Change asprintf() uses to ast_asprintf() so that it pairs properly with ast_free() and no longer causes MALLOC_DEBUG to freak out. * When ast_asprintf() fails, set the pointer NULL if it will be referenced later. * Fix some memory leaks that were spotted while taking care of the first two points. (Closes issue ASTERISK-20135) reported by Richard Mudgett Review: https://reviewboard.asterisk.org/r/2071 ........ Merged revisions 371590 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 371591 from http://svn.asterisk.org/svn/asterisk/branches/10 ........ Merged revisions 371592 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@371593 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-08-15Fix bug where final queue member would not be removed from memory.Mark Michelson
If a static queue had realtime members, then there could be a potential for those realtime members not to be properly deleted from memory. If the queue's members were loaded from realtime and then all the members were deleted from the backend, then the queue would still think these members existed. The reason was that there was a short- circuit in code such that if there were no members found in the backend, then the queue would not be updated to reflect this. Note that this only affected static queues with realtime members. Realtime queues with realtime members were unaffected by this issue. (closes issue ASTERISK-19793) reported by Marcus Haas ........ Merged revisions 371306 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 371313 from http://svn.asterisk.org/svn/asterisk/branches/10 ........ Merged revisions 371324 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@371325 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-08-10Fix a couple of documentation problems in app_queue.cMark Michelson
* The RemoveQueueMember app made mention of options that could be passed in, but no options are supported. I have removed the listing of options from the documentation. * The RQMSTATUS variable did not list "NOTDYNAMIC" as a possible value that could be set. (closes issue AST-949) reported by Steve Pitts (closes issue AST-954) reported by Steve Pitts ........ Merged revisions 371141 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 371142 from http://svn.asterisk.org/svn/asterisk/branches/10 ........ Merged revisions 371143 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@371144 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-06-29Hangup handlers - Dialplan subroutines that run when the channel hangs up.Richard Mudgett
Hangup handlers are an alternative to the h extension. They can be used in addition to the h extension. The idea is to attach a Gosub routine to a channel that will execute when the call hangs up. Whereas which h extension gets executed depends on the location of dialplan execution when the call hangs up, hangup handlers are attached to the call channel. You can attach multiple handlers that will execute in the order of most recently added first. (closes issue ASTERISK-19549) Reported by: Mark Murawski Tested by: rmudgett Review: https://reviewboard.asterisk.org/r/2002/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@369493 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-06-25Add AMI event documentationMatthew Jordan
This patch adds the core changes necessary to support AMI event documentation in the source files of Asterisk, and adds documentation to those AMI events defined in the core application modules. Event documentation is built from the source by two new python scripts, located in build_tools: get_documentation.py and post_process_documentation.py. The get_documentation.py script mirrors the actions of the existing AWK get_documentation scripts, except that it will scan the entirety of a source file for Asterisk documentation. Upon encountering it, if the documentation happens to be an AMI event, it will attempt to extract information about the event directly from the manager event macro calls that raise the event. The post_process_documentation.py script combines manager event instances that are the same event but documented in multiple source files. It generates the final core-[lang].xml file. As this process can take longer to complete than a typical 'make all', it is only performed if a new make target, 'full', is chosen. Review: https://reviewboard.asterisk.org/r/1967/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@369346 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-06-22Explicitly check caller hangup in app Queue rather than a polluted res2 value.Richard Mudgett
........ Merged revisions 369262 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 369263 from http://svn.asterisk.org/svn/asterisk/branches/10 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@369264 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-06-22Fix F and F(x) action logic in Queue application.Richard Mudgett
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@369261 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-06-14Allow non-normal execution routines to be able to run on hungup channels.Richard Mudgett
* Make non-normal dialplan execution routines be able to run on a hung up channel. This is preparation work for hangup handler routines. * Fixed ability to support relative non-normal dialplan execution routines. (i.e., The context and exten are optional for the specified dialplan location.) Predial routines are the only non-normal routines that it makes sense to optionally omit the context and exten. Setting a hangup handler also needs this ability. * Fix Return application being able to restore a dialplan location exactly. Channels without a PBX may not have context or exten set. * Fixes non-normal execution routines like connected line interception and predial leaving the dialplan execution stack unbalanced. Errors like missing Return statements, popping too many stack frames using StackPop, or an application returning non-zero could leave the dialplan stack unbalanced. * Fixed the AGI gosub application so it cleans up the dialplan execution stack and handles the autoloop priority increments correctly. * Eliminated the need for the gosub_virtual_context return location. Review: https://reviewboard.asterisk.org/r/1984/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@368985 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-06-11Fix coverity UNUSED_VALUE findings in core support level filesKinsey Moore
Most of these were just saving returned values without using them and in some cases the variable being saved to could be removed as well. (issue ASTERISK-19672) ........ Merged revisions 368738 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 368739 from http://svn.asterisk.org/svn/asterisk/branches/10 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@368751 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-06-07Fix app_queue debug message use of args.options after the string has been ↵Richard Mudgett
parsed. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@368675 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-06-07Fix inverted test in app_queue for ringinuse.Richard Mudgett
Regression from -r367080 ringinuse commit. (issue ASTERISK-19536) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@368674 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-06-05Convert AST_FLAG_ANSWERED_ELSEWHERE usage to AST_CAUSE_ANSWERED_ELSEWHEREKinsey Moore
This was essentially duplicated functionality where normal channels used AST_CAUSE_ANSWERED_ELSEWHERE while local channels and queues used AST_FLAG_ANSWERED_ELSEWHERE. This removes the flag and converts that usage into AST_CAUSE_ANSWERED_ELSEWHER usage. Review: https://reviewboard.asterisk.org/r/1944 (closes issue ASTERISK-19865) Patch-by: Birger Harzenetter git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@368519 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-06-04Merge changes dealing with support for Digium phones.Mark Michelson
Presence support has been added. This is accomplished by allowing for presence hints in addition to device state hints. A dialplan function called PRESENCE_STATE has been added to allow for setting and reading presence. Presence can be transmitted to Digium phones using custom XML elements in a PIDF presence document. Voicemail has new APIs that allow for moving, removing, forwarding, and playing messages. Messages have had a new unique message ID added to them so that the APIs will work reliably. The state of a voicemail mailbox can be obtained using an API that allows one to get a snapshot of the mailbox. A voicemail Dialplan App called VoiceMailPlayMsg has been added to be able to play back a specific message. Configuration hooks have been added. Configuration hooks allow for a piece of code to be executed when a specific configuration file is loaded by a specific module. This is useful for modules that are dependent on the configuration of other modules. chan_sip now has a public method that allows for a custom SIP INFO request to be sent mid-dialog. Digium phones use this in order to display progress bars when files are played. Messaging support has been expanded a bit. The main visible difference is the addition of an AMI action MessageSend. Finally, a ParkingLots manager action has been added in order to get a list of parking lots. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@368435 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-31Coverity Report: Fix issues for error type REVERSE_INULL (core modules)Richard Mudgett
* Fixes findings: 0-2,5,7-15,24-26,28-31 (issue ASTERISK-19648) Reported by: Matt Jordan ........ Merged revisions 368039 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 368042 from http://svn.asterisk.org/svn/asterisk/branches/10 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@368052 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-24Fix Dial I option ignored if dial forked and one fork redirects.Richard Mudgett
The Dial and Queue I option is intended to block connected line updates and redirecting updates. However, it is a feature that when a call is locally redirected, the I option is disabled if the redirected call runs as a local channel so the administrator can have an opportunity to setup new connected line information. Unfortunately, the Dial and Queue I option is disabled for *all* forked calls if one of those calls is redirected. * Make the Dial and Queue I option apply to each outgoing call leg independently. Now if one outgoing call leg is locally redirected, the other outgoing calls are not affected. * Made Dial not pass any redirecting updates when forking calls. Redirecting updates do not make sense for this scenario. * Made Queue not pass any redirecting updates when using the ringall strategy. Redirecting updates do not make sense for this scenario. * Fixed deadlock potential with chan_local when Dial and Queue send redirecting updates for a local redirect. * Converted the Queue stillgoing flag to a boolean bitfield. (closes issue ASTERISK-19511) Reported by: rmudgett Tested by: rmudgett Review: https://reviewboard.asterisk.org/r/1920/ ........ Merged revisions 367678 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 367679 from http://svn.asterisk.org/svn/asterisk/branches/10 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@367693 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-18app_queue: Per Member ringinuse option and deprecation of ignorebusyJonathan Rose
Adds a number of methods for controlling the setting of 'ringinuse' which is basically the same concept as the old ignorebusy setting, only now the per member setting always controls whether or not the member is actually ringed while in use. A CLI command and a manager action have been added to change a given queue member's ringinuse option while Asterisk is running and the an argument has been added for adding members with deliberately set ringinuse in queues.conf Some effort has been made to ensure compatability with dialplans and databases still referring to 'ignorebusy'. (issue ASTERISK-19536) reported by: Philippe Lindheimer Review: https://reviewboard.asterisk.org/r/1919/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@367080 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-18Fix a variety of memory leaksMatthew Jordan
This patch addresses a number of memory leaks in a variety of modules that were found by a static analysis tool. A brief summary of the changes: * app_minivm: free ast_str objects on off nominal paths * app_page: free the ast_dial object if the requested channel technology cannot be appended to the dialing structure * app_queue: if a penalty rule failed to match any existing rule list names, the created rule would not be inserted and its memory would be leaked * app_read: dispose of the created silence detector in the presence of off nominal circumstances * app_voicemail: dispose of an allocated unique ID field for MWI event un-subscribe requests in off nominal paths; dispose of configuration objects when using the secret.conf option * chan_dahdi: dispose of the allocated frame produced by ast_dsp_process * chan_iax2: properly unref peer in CLI command "iax2 unregister" * chan_sip: dispose of the allocated frame produced by sip_rtp_read's call of ast_dsp_process; free memory in parse unit tests * func_dialgroup: properly deref ao2 object grhead in nominal path of dialgroup_read * func_odbc: free resultset in off nominal paths of odbc_read * cli: free match_list in off nominal paths of CLI match completion * config: free comment_buffer/list_buffer when configuration file load is unchanged; free the same buffers any time they were created and config files were processed * data: free XML nodes in various places * enum: free context buffer in off nominal paths * features: free ast_call_feature in off nominal paths of applicationmap config processing * netsock2: users of ast_sockaddr_resolve pass in an ast_sockaddr struct that is allocated by the method. Failures in ast_sockaddr_resolve could result in the users of the method not knowing whether or not the buffer was allocated. The method will now not allocate the ast_sockaddr struct if it will return failure. * pbx: cleanup hash table traversals in off nominal paths; free ignore pattern buffer if it already exists for the specified context * xmldoc: cleanup various nodes when we no longer need them * main/editline: various cleanup of pointers not being freed before being assigned to other memory, cleanup along off nominal paths * menuselect/mxml: cleanup of value buffer for an attribute when that attribute did not specify a value * res_calendar*: responses are allocated via the various *_request method returns and should not be allocated in the various write_event methods; ensure attendee buffer is freed if no data exists in the parsed node; ensure that calendar objects are de-ref'd appropriately * res_jabber: free buffer in off nominal path * res_musiconhold: close the DIR* object in off nominal paths * res_rtp_asterisk: if we run out of ports, close the rtp socket object and free the rtp object * res_srtp: if we fail to create the session in libsrtp, destroy the temporary ast_srtp object (issue ASTERISK-19665) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/1922 ........ Merged revisions 366880 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 366881 from http://svn.asterisk.org/svn/asterisk/branches/10 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@366917 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-14Commit framework for HANGUPCAUSE (replacement for SIP_CAUSE)Kinsey Moore
This is the starting point for the Asterisk 11: Who Hung Up work and provides a framework which will allow channel drivers to report the types of hangup cause information available in SIP_CAUSE without incurring the overhead of the MASTER_CHANNEL dialplan function. The initial implementation only includes cause generation for chan_sip and does not include cause code translation utilities. This change deprecates SIP_CAUSE and replaces its method of reporting cause codes with the new framework. This change also deprecates the 'storesipcause' option in sip.conf. Review: https://reviewboard.asterisk.org/r/1822/ (Closes issue SWP-4221) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@366408 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-10Coverity Report: Fix issues for error type CHECKED_RETURN for coreJonathan Rose
(issue ASTERISK-19658) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/1905/ ........ Merged revisions 366094 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 366106 from http://svn.asterisk.org/svn/asterisk/branches/10 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@366126 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-26Code formatting fixes.Olle Johansson
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@363989 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-25Add documentationOlle Johansson
Thanks Tilghman! git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@363637 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-25Formatting changes onlyOlle Johansson
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@363599 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-25Use the DEFINED value for musicclass length.Olle Johansson
For some reason, features.c has it's own definition. Should propably be fixed too. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@363595 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-23Make app_dial and app_queue use new macro and gosub calls.Richard Mudgett
* Simplify some code in app_dial and app_queue by calling ast_app_exec_macro() and ast_app_exec_sub(). * Fix minor locking issue in app_dial for post-answer macro/gosub MACRO/GOSUB_RESULT=GOTO: handling. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@363269 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-04-11Change default value of 'ignorebusy' on Queue members so that behavior is ↵Jonathan Rose
more like 1.8 Prior to this patch, in order to restore that behavior, a function would have to be used on the QueueMember to make the ringinuse option do anything, which is pretty unreasonable. (closes issue ASTERISK-19536) reported by: Philippe Lindheimer Review: https://reviewboard.asterisk.org/r/1860/ ........ Merged revisions 361907 from http://svn.asterisk.org/svn/asterisk/branches/10 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@361909 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-03-22Adds F option to Bridge applicationJonathan Rose
Similar to dial and queue F option. (Closes issue ASTERISK-19282) Reported by: To Patches: bridge_f-v3.diff uploaded by To (license 6347) Review: https://reviewboard.asterisk.org/r/1825/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@360227 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-03-15Add missing connected line macro calls to initial dial for Dial and Queue apps.Richard Mudgett
The connected line interception macros do not get executed when the outgoing channel is initially created and that channel's caller-id is implicitly imported into the incoming channel's connected line data. If you are using the interception macros, you would expect that they get run for every change to a channel's connected line information outside of normal dialplan execution. Review: https://reviewboard.asterisk.org/r/1817/ ........ Merged revisions 359609 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 359620 from http://svn.asterisk.org/svn/asterisk/branches/10 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@359644 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-03-13Finalize ast_channel opaquificationTerry Wilson
Review: https://reviewboard.asterisk.org/r/1786/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@358907 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-03-08Resolve a few more cases of variable shadowing.Sean Bright
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@358691 65c4cc65-6c06-0410-ace0-fbb531ad65f3