aboutsummaryrefslogtreecommitdiffstats
path: root/apps/app_directed_pickup.c
AgeCommit message (Collapse)AuthorFilesLines
2010-07-14ast_callerid restructuringrmudgett1-3/+3
The purpose of this patch is to eliminate struct ast_callerid since it has turned into a miscellaneous collection of various party information. Eliminate struct ast_callerid and replace it with the following struct organization: struct ast_party_name { char *str; int char_set; int presentation; unsigned char valid; }; struct ast_party_number { char *str; int plan; int presentation; unsigned char valid; }; struct ast_party_subaddress { char *str; int type; unsigned char odd_even_indicator; unsigned char valid; }; struct ast_party_id { struct ast_party_name name; struct ast_party_number number; struct ast_party_subaddress subaddress; char *tag; }; struct ast_party_dialed { struct { char *str; int plan; } number; struct ast_party_subaddress subaddress; int transit_network_select; }; struct ast_party_caller { struct ast_party_id id; char *ani; int ani2; }; The new organization adds some new information as well. * The party name and number now have their own presentation value that can be manipulated independently. ISDN supplies the presentation value for the name and number at different times with the possibility that they could be different. * The party name and number now have a valid flag. Before this change the name or number string could be empty if the presentation were restricted. Most channel drivers assume that the name or number is then simply not available instead of indicating that the name or number was restricted. * The party name now has a character set value. SIP and Q.SIG have the ability to indicate what character set a name string is using so it could be presented properly. * The dialed party now has a numbering plan value that could be useful to have available. The various channel drivers will need to be updated to support the new core features as needed. They have simply been converted to supply current functionality at this time. The following items of note were either corrected or enhanced: * The CONNECTEDLINE() and REDIRECTING() dialplan functions were consolidated into func_callerid.c to share party id handling code. * CALLERPRES() is now deprecated because the name and number have their own presentation values. * Fixed app_alarmreceiver.c write_metadata(). The workstring[] could contain garbage. It also can only contain the caller id number so using ast_callerid_parse() on it is silly. There was also a typo in the CALLERNAME if test. * Fixed app_rpt.c using ast_callerid_parse() on the channel's caller id number string. ast_callerid_parse() alters the given buffer which in this case is the channel's caller id number string. Then using ast_shrink_phone_number() could alter it even more. * Fixed caller ID name and number memory leak in chan_usbradio.c. * Fixed uninitialized char arrays cid_num[] and cid_name[] in sig_analog.c. * Protected access to a caller channel with lock in chan_sip.c. * Clarified intent of code in app_meetme.c sla_ring_station() and dial_trunk(). Also made save all caller ID data instead of just the name and number strings. * Simplified cdr.c set_one_cid(). It hand coded the ast_callerid_merge() function. * Corrected some weirdness with app_privacy.c's use of caller presentation. Review: https://reviewboard.asterisk.org/r/702/ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@276347 f38db490-d61c-443f-a65b-d21fe96a405b
2010-05-10fixes PickupChan applicationdvossel1-2/+2
(closes issue #16863) Reported by: schern Patches: app_directed_pickup.c.patch uploaded by schern (license 995) for_trunk.diff uploaded by cjacobsen (license 1029) Tested by: Graber, cjacobsen, lathama, rickead2000, dvossel git-svn-id: http://svn.digium.com/svn/asterisk/trunk@262240 f38db490-d61c-443f-a65b-d21fe96a405b
2010-03-02adds 'p' option to PickupChandvossel1-6/+60
The 'p' option allows the PickupChan app to pickup a ringing phone by looking for the first match to a partial channel name rather than requiring a full match. (closes issue #16613) Reported by: syspert Patches: pickipbycallid.patch uploaded by syspert (license 938) pickupbycallerid_v2.patch uploaded by dvossel (license 671) Tested by: dvossel, syspert git-svn-id: http://svn.digium.com/svn/asterisk/trunk@250141 f38db490-d61c-443f-a65b-d21fe96a405b
2010-01-15Add pickup event to AMI. Also, fix AMI documentation.tilghman1-0/+6
(closes issue #16431) Reported by: syspert Patches: 20100112__issue16431.diff.txt uploaded by tilghman (license 14) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@240421 f38db490-d61c-443f-a65b-d21fe96a405b
2009-10-21Finish implementaton of astobj2 OBJ_MULTIPLE, and convert ↵kpfleming1-1/+3
ast_channel_iterator to use it. This patch finishes the implementation of OBJ_MULTIPLE in astobj2 (the case where multiple results need to be returned; OBJ_NODATA mode already was supported). In addition, it converts ast_channel_iterators (only the targeted versions, not the ones that iterate over all channels) to use this method. During this work, I removed the 'ao2_flags' arguments to the ast_channel_iterator constructor functions; there were no uses of that argument yet, there is only one possible flag to pass, and it made the iterators less 'opaque'. If at some point in the future someone really needs an ast_channel_iterator that does not lock the container, we can provide constructor(s) for that purpose. Review: https://reviewboard.asterisk.org/r/379/ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@225244 f38db490-d61c-443f-a65b-d21fe96a405b
2009-09-14Merged revisions 218223 via svnmerge from mnicholson1-1/+1
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r218223 | mnicholson | 2009-09-14 09:53:57 -0500 (Mon, 14 Sep 2009) | 8 lines Ensure we don't pickup ourselves when doing pickup by exten. (closes issue #15100) Reported by: lmsteffan Patches: (modified) pickup.patch uploaded by lmsteffan (license 779) ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@218224 f38db490-d61c-443f-a65b-d21fe96a405b
2009-07-22Fix the crash in directed pickups. For real this time.mmichelson1-1/+3
A shallow pointer copy was causing an ast_party_connected_line structure to be freed multiple times, thus causing a crash. (closes issue #15441) Reported by: lmsteffan Patches: 15441.patch uploaded by mmichelson (license 60) Tested by: lmsteffan git-svn-id: http://svn.digium.com/svn/asterisk/trunk@208017 f38db490-d61c-443f-a65b-d21fe96a405b
2009-07-20Okay, that didn't fix the crash. It didn't really do anything useful.mmichelson1-1/+0
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@207551 f38db490-d61c-443f-a65b-d21fe96a405b
2009-07-20Initialize connected line instance when doing a directed pickup.mmichelson1-0/+1
This helps to prevent a crash which may occur due to our freeing garbage due to a struct being uninitialized. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@207522 f38db490-d61c-443f-a65b-d21fe96a405b
2009-06-26Merge the new Channel Event Logging (CEL) subsystem.russell1-0/+2
CEL is the new system for logging channel events. This was inspired after facing many problems trying to represent what is possible to happen to a call in Asterisk using CDR records. For more information on CEL, see the built in HTML or PDF documentation generated from the files in doc/tex/. Many thanks to Steve Murphy (murf) and Brian Degenhardt (bmd) for their hard work developing this code. Also, thanks to Matt Nicholson (mnicholson) and Sean Bright (seanbright) for their assistance in the final push to get this code ready for Asterisk trunk. Review: https://reviewboard.asterisk.org/r/239/ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@203638 f38db490-d61c-443f-a65b-d21fe96a405b
2009-06-07Global var cleanup - constification and removing unused vars.russell1-2/+2
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@199479 f38db490-d61c-443f-a65b-d21fe96a405b
2009-06-01Add the ability to execute connected line interception macros.mmichelson1-1/+3
When connected line updates are received or generated in the middle of an application call, it is now possible to execute a macro to manipulate the connected line data. This way, phone numbers may be manipulated to be more presentable to users, names may be changed for...whatever reason, or whatever else needs to be done may be. Review: https://reviewboard.asterisk.org/r/256 AST-165 git-svn-id: http://svn.digium.com/svn/asterisk/trunk@198727 f38db490-d61c-443f-a65b-d21fe96a405b
2009-05-26Remove some redundant or unnecessary connected line-related function calls.mmichelson1-1/+0
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@196893 f38db490-d61c-443f-a65b-d21fe96a405b
2009-05-21Const-ify the world (or at least a good part of it)kpfleming1-2/+2
This patch adds 'const' tags to a number of Asterisk APIs where they are appropriate (where the API already demanded that the function argument not be modified, but the compiler was not informed of that fact). The list includes: - CLI command handlers - CLI command handler arguments - AGI command handlers - AGI command handler arguments - Dialplan application handler arguments - Speech engine API function arguments In addition, various file-scope and function-scope constant arrays got 'const' and/or 'static' qualifiers where they were missing. Review: https://reviewboard.asterisk.org/r/251/ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@196072 f38db490-d61c-443f-a65b-d21fe96a405b
2009-05-12add 'const' qualifiers in various places where they should have beenkpfleming1-2/+2
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@193832 f38db490-d61c-443f-a65b-d21fe96a405b
2009-05-05Fixed crashes from issue8824 review board channel locking changes.rmudgett1-1/+1
The local struct ast_party_connected_line connected_caller variable was uninitialized when the copy function was called. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@192590 f38db490-d61c-443f-a65b-d21fe96a405b
2009-04-24Convert the ast_channel data structure over to the astobj2 framework.russell1-47/+65
There is a lot that could be said about this, but the patch is a big improvement for performance, stability, code maintainability, and ease of future code development. The channel list is no longer an unsorted linked list. The main container for channels is an astobj2 hash table. All of the code related to searching for channels or iterating active channels has been rewritten. Let n be the number of active channels. Iterating the channel list has gone from O(n^2) to O(n). Searching for a channel by name went from O(n) to O(1). Searching for a channel by extension is still O(n), but uses a new method for doing so, which is more efficient. The ast_channel object is now a reference counted object. The benefits here are plentiful. Some benefits directly related to issues in the previous code include: 1) When threads other than the channel thread owning a channel wanted access to a channel, it had to hold the lock on it to ensure that it didn't go away. This is no longer a requirement. Holding a reference is sufficient. 2) There are places that now require less dealing with channel locks. 3) There are places where channel locks are held for much shorter periods of time. 4) There are places where dealing with more than one channel at a time becomes _MUCH_ easier. ChanSpy is a great example of this. Writing code in the future that deals with multiple channels will be much easier. Some additional information regarding channel locking and reference count handling can be found in channel.h, where a new section has been added that discusses some of the rules associated with it. Mark Michelson also assisted with the development of this patch. He did the conversion of ChanSpy and introduced a new API, ast_autochan, which makes it much easier to deal with holding on to a channel pointer for an extended period of time and having it get automatically updated if the channel gets masqueraded. Mark was also a huge help in the code review process. Thanks to David Vossel for his assistance with this branch, as well. David did the conversion of the DAHDIScan application by making it become a wrapper for ChanSpy internally. The changes come from the svn/asterisk/team/russell/ast_channel_ao2 branch. Review: http://reviewboard.digium.com/r/203/ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@190423 f38db490-d61c-443f-a65b-d21fe96a405b
2009-04-23Fix a double free issue with the Pickup dialplan application.file1-0/+1
As part of the pickup process the connected line information is updated. Part of this process does a shallow copy of the target channel's connected line information to a local structure. Once complete the structure contents are freed. As a result any information in the target channel's connected line information structure is no longer valid. This change will now set the contents back to a clean state so that the freeing of the target channel's connected line information structure when the channel is destroyed will no longer try to double free things. (closes issue #14839) Reported by: lmsteffan git-svn-id: http://svn.digium.com/svn/asterisk/trunk@190217 f38db490-d61c-443f-a65b-d21fe96a405b
2009-04-03This commit introduces COLP/CONP and Redirecting party information into ↵mmichelson1-0/+13
Asterisk. The channel drivers which have been most heavily tested with these enhancements are chan_sip and chan_misdn. Further work is being done to add Q.SIG support and will be introduced in a later commit. chan_skinny has code added to it here, but according to user pj, the support on chan_skinny is not working as of now. This will be fixed in a later commit. A special thanks goes out to bugtracker user gareth for getting the ball rolling and providing the initial support for this work. Without his initial work on this, this would not have been nearly as painless as it was. This functionality has been tested by Digium's product quality department, as well as a customer site running thousands of calls every day. In addition, many many many many bugtracker users have tested this, too. (closes issue #8824) Reported by: gareth Review: http://reviewboard.digium.com/r/201 git-svn-id: http://svn.digium.com/svn/asterisk/trunk@186525 f38db490-d61c-443f-a65b-d21fe96a405b
2009-03-03fix a leaked channel lock (and future deadlock) when we try to pick up our ↵bmd1-1/+1
own channel git-svn-id: http://svn.digium.com/svn/asterisk/trunk@179903 f38db490-d61c-443f-a65b-d21fe96a405b
2008-12-09Merged revisions 162341 via svnmerge from file1-1/+1
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r162341 | file | 2008-12-09 17:14:29 -0400 (Tue, 09 Dec 2008) | 4 lines Add 'down' as a valid state for directed call pickup. This creeps up when we receive session progress when dialing a device and not ringing. (closes issue #14005) Reported by: ddl ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@162342 f38db490-d61c-443f-a65b-d21fe96a405b
2008-11-09In order to move away from nested function use, some changes to the recently ↵seanbright1-16/+31
introduced ast_channel_search_locked need to be made. Specifically, the caller needs to be able to pass arbitrary data which in turn is passed to the callback. This patch addresses all of the nested functions currently in asterisk trunk. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@155590 f38db490-d61c-443f-a65b-d21fe96a405b
2008-11-05Fix some whitespace.seanbright1-2/+2
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@154926 f38db490-d61c-443f-a65b-d21fe96a405b
2008-11-05Update a couple places to use the new ast_channel_search_locked API call.seanbright1-25/+29
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@154923 f38db490-d61c-443f-a65b-d21fe96a405b
2008-11-02Instead of doing a couple of strlen() calls each iteration of the loop, only ↵russell1-5/+12
do it once at the beginning of the function git-svn-id: http://svn.digium.com/svn/asterisk/trunk@153435 f38db490-d61c-443f-a65b-d21fe96a405b
2008-11-01Merge changes from team/group/appdocsxmlrussell1-17/+42
This commit introduces the first phase of an effort to manage documentation of the interfaces in Asterisk in an XML format. Currently, a new format is available for applications and dialplan functions. A good number of conversions to the new format are also included. For more information, see the following message to asterisk-dev: http://lists.digium.com/pipermail/asterisk-dev/2008-October/034968.html git-svn-id: http://svn.digium.com/svn/asterisk/trunk@153365 f38db490-d61c-443f-a65b-d21fe96a405b
2008-04-25Merge app_pickupchan with app_directed_pickup, for AST-27.qwell1-2/+87
Initially, this was to be a new feature, with a patch from Switchvox, but after discussions, it was noted that this feature already existed in trunk. The resulting discussions ended in a comment that was along the lines of "the patch provided here is a lot smaller than what is already in trunk, because it doesn't create a new application and duplicate existing code" It was decided that these two applications could be easily merged to reduce code duplication. SO, that's what this does. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@114660 f38db490-d61c-443f-a65b-d21fe96a405b
2008-02-09whitespace fixes only.mvanbaak1-5/+5
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@103249 f38db490-d61c-443f-a65b-d21fe96a405b
2007-11-21remove another set of redundant #include "asterisk/options.h"rizzo1-1/+0
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@89512 f38db490-d61c-443f-a65b-d21fe96a405b
2007-11-19include "logger.h" and errno.h from asterisk.h - usage shows that theyrizzo1-1/+0
were included almost everywhere. Remove some of the instances. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@89424 f38db490-d61c-443f-a65b-d21fe96a405b
2007-11-16Start untangling header inclusion in a way that does not affectrizzo1-5/+0
build times - tested, there is no measureable difference before and after this commit. In this change: use asterisk/compat.h to include a small set of system headers: inttypes.h, unistd.h, stddef.h, stddint.h, sys/types.h, stdarg.h, stdlib.h, alloca.h, stdio.h Where available, the inclusion is conditional on HAVE_FOO_H as determined by autoconf. Normally, source files should not include any of the above system headers, and instead use either "asterisk.h" or "asterisk/compat.h" which does it better. For the time being I have left alone second-level directories (main/db1-ast, etc.). git-svn-id: http://svn.digium.com/svn/asterisk/trunk@89333 f38db490-d61c-443f-a65b-d21fe96a405b
2007-11-06"show application <foo>" changes for clarity.mmichelson1-1/+1
(closes issue #11171, reported and patched by blitzrage) Many thanks! git-svn-id: http://svn.digium.com/svn/asterisk/trunk@89044 f38db490-d61c-443f-a65b-d21fe96a405b
2007-08-27Enhance Pickup to do native pickupgroup pickup when no arguments are ↵tilghman1-7/+11
specified (closes issue #10404) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@81118 f38db490-d61c-443f-a65b-d21fe96a405b
2007-07-16Applications no longer need to call ast_module_user_add and ↵file1-5/+0
ast_module_user_remove. This is now taken care of in the pbx_exec function outside of the application. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@75200 f38db490-d61c-443f-a65b-d21fe96a405b
2007-06-14Add a massive set of changes for converting to use the ast_debug() macro.russell1-2/+1
(issue #9957, patches from mvanbaak, caio1982, critch, and dimas) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@69327 f38db490-d61c-443f-a65b-d21fe96a405b
2007-06-06Merged revisions 67626 via svnmerge from file1-1/+1
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r67626 | file | 2007-06-06 09:16:34 -0400 (Wed, 06 Jun 2007) | 2 lines Include macroexten while searching for a channel to pick up in case they are in a macro. (issue #9491 reported by jamesb63) ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@67628 f38db490-d61c-443f-a65b-d21fe96a405b
2007-06-04Minor clean up. Constify a few variables and use ast_strlen_zero in a few ↵file1-4/+4
places. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@67063 f38db490-d61c-443f-a65b-d21fe96a405b
2006-11-20Merged revisions 47850 via svnmerge from file1-1/+1
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r47850 | file | 2006-11-20 10:51:37 -0500 (Mon, 20 Nov 2006) | 2 lines Use a separate variable in the channel structure to store the context that the channel was dialed from. (issue #8382 reported by jiddings) ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@47851 f38db490-d61c-443f-a65b-d21fe96a405b
2006-10-16It's new directed pickup! This now features a more sane way of finding the ↵file1-78/+89
channel to pick up (I snuck it into the tree on Friday... bet you didn't know I'd actually use it eh?). PICKUPMARK now also works in a different way, you should prefix it with _ when setting it so it gets inherited onto the channel(s) created in app_dial as directed pickup will now look for it on the target channel, not the originating channel. (BE-85) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@45234 f38db490-d61c-443f-a65b-d21fe96a405b
2006-10-03bug #8076 check option_debug before printing to debug channel.mogorman1-2/+5
patch provided in bugnote, with minor changes. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@44253 f38db490-d61c-443f-a65b-d21fe96a405b
2006-08-21merge new_loader_completion branch, including (at least):kpfleming1-18/+6
- restructured build tree and makefiles to eliminate recursion problems - support for embedded modules - support for static builds - simpler cross-compilation support - simpler module/loader interface (no exported symbols) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@40722 f38db490-d61c-443f-a65b-d21fe96a405b
2006-07-23fix a seg fault in this application if no context paramater is givenrussell1-1/+1
(issue #7571) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@38118 f38db490-d61c-443f-a65b-d21fe96a405b
2006-06-07simplify autoconfig include mechanism (make tholo happy he can use lint ↵kpfleming1-4/+4
again :-) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@32846 f38db490-d61c-443f-a65b-d21fe96a405b
2006-05-22Add PICKUPMARK support to app_directed_pickup (issue #7104 reported by thaeger)file1-4/+22
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@29463 f38db490-d61c-443f-a65b-d21fe96a405b
2006-04-14This rather large commit changes the way modules are loaded. rizzo1-17/+8
As partly documented in loader.c and include/asterisk/module.h, modules are now expected to return all of their methods and flags into a structure 'mod_data', and are normally loaded with RTLD_NOW | RTLD_LOCAL, so symbols are resolved immediately and conflicts should be less likely. Only in a small number of cases (res_*, typically) modules are loaded RTLD_GLOBAL, so they can export symbols. The core of the change is only the two files loader.c and include/asterisk/module.h, all the rest is simply adaptation of the existing modules to the new API, a rather mechanical (but believe me, time and finger-consuming!) process whose detail you can figure out by svn diff'ing any single module. Expect some minor compilation issue after this change, please report it on mantis http://bugs.digium.com/view.php?id=6968 so we collect all the feedback in one place. I am just sorry that this change missed SVN version number 20000! git-svn-id: http://svn.digium.com/svn/asterisk/trunk@20003 f38db490-d61c-443f-a65b-d21fe96a405b
2006-04-08since the module API is changing, it's a good time to const-ify the ↵kpfleming1-2/+2
description() and key() return values git-svn-id: http://svn.digium.com/svn/asterisk/trunk@18552 f38db490-d61c-443f-a65b-d21fe96a405b
2006-04-06Merged revisions 17905 via svnmerge from file1-1/+1
https://origsvn.digium.com/svn/asterisk/branches/1.2 ........ r17905 | file | 2006-04-06 14:00:10 -0300 (Thu, 06 Apr 2006) | 2 lines Update email address to my Digium one ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@17914 f38db490-d61c-443f-a65b-d21fe96a405b
2006-02-23Bug 6417 - Allow retrieval of raw CDR valuestilghman1-1/+1
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@10953 f38db490-d61c-443f-a65b-d21fe96a405b
2006-02-15remove the uses of the deprecated STANDARD_LOCAL_USERrussell1-2/+0
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@10241 f38db490-d61c-443f-a65b-d21fe96a405b
2006-01-13allow app_directed_pickup to try to pickupmogorman1-54/+55
multiple channels at the same time. however it does not work in cases where dial was called with multiple devices. bug 5694. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@8057 f38db490-d61c-443f-a65b-d21fe96a405b