Commit Graph

48 Commits

Author SHA1 Message Date
Richard Mudgett 7019ff68db Fixed crashes from issue8824 review board channel locking changes.
The local struct ast_party_connected_line connected_caller variable
was uninitialized when the copy function was called.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@192590 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-05-05 20:54:07 +00:00
Russell Bryant cba19c8a67 Convert the ast_channel data structure over to the astobj2 framework.
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: https://origsvn.digium.com/svn/asterisk/trunk@190423 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-04-24 14:04:26 +00:00
Joshua Colp ada8ae56e1 Fix a double free issue with the Pickup dialplan application.
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: https://origsvn.digium.com/svn/asterisk/trunk@190217 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-04-23 16:55:48 +00:00
Mark Michelson 6f53ed4c67 This commit introduces COLP/CONP and Redirecting party information into 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: https://origsvn.digium.com/svn/asterisk/trunk@186525 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-04-03 22:41:46 +00:00
Brian Degenhardt a7092f0acc fix a leaked channel lock (and future deadlock) when we try to pick up our own channel
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@179903 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-03-03 20:02:20 +00:00
Joshua Colp f56edec570 Merged revisions 162341 via svnmerge from
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: https://origsvn.digium.com/svn/asterisk/trunk@162342 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-12-09 21:16:37 +00:00
Sean Bright 48522988ab In order to move away from nested function use, some changes to the recently 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: https://origsvn.digium.com/svn/asterisk/trunk@155590 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-11-09 01:59:59 +00:00
Sean Bright 8a25d59bf8 Fix some whitespace.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@154926 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-11-05 22:22:37 +00:00
Sean Bright 6ac794074e Update a couple places to use the new ast_channel_search_locked API call.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@154923 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-11-05 22:19:22 +00:00
Russell Bryant ad533bc62b Instead of doing a couple of strlen() calls each iteration of the loop, only do it once
at the beginning of the function


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@153435 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-11-02 02:14:19 +00:00
Russell Bryant 5b168ee34b Merge changes from team/group/appdocsxml
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: https://origsvn.digium.com/svn/asterisk/trunk@153365 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-11-01 21:10:07 +00:00
Jason Parker 80f8fc9ffd Merge app_pickupchan with app_directed_pickup, for AST-27.
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: https://origsvn.digium.com/svn/asterisk/trunk@114660 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-04-25 18:32:22 +00:00
Michiel van Baak 4dccb58fb7 whitespace fixes only.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@103249 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-02-09 11:27:10 +00:00
Luigi Rizzo 7e8835e0d7 remove another set of redundant #include "asterisk/options.h"
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89512 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-21 23:24:55 +00:00
Luigi Rizzo 0595b5e2aa include "logger.h" and errno.h from asterisk.h - usage shows that they
were included almost everywhere.
Remove some of the instances.



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89424 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-19 18:52:04 +00:00
Luigi Rizzo fdb7f7ba3d Start untangling header inclusion in a way that does not affect
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: https://origsvn.digium.com/svn/asterisk/trunk@89333 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-16 20:04:58 +00:00
Mark Michelson 5a4867543d "show application <foo>" changes for clarity.
(closes issue #11171, reported and patched by blitzrage)

Many thanks!



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89044 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-06 19:04:45 +00:00
Tilghman Lesher 8ba30bb7bd Enhance Pickup to do native pickupgroup pickup when no arguments are specified (closes issue #10404)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@81118 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-27 20:55:36 +00:00
Joshua Colp b8cd949cce Applications no longer need to call ast_module_user_add and ast_module_user_remove. This is now taken care of in the pbx_exec function outside of the application.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@75200 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-16 14:39:29 +00:00
Russell Bryant 055d82cbce Add a massive set of changes for converting to use the ast_debug() macro.
(issue #9957, patches from mvanbaak, caio1982, critch, and dimas)


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@69327 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-06-14 19:39:12 +00:00
Joshua Colp 4ba8071bda Merged revisions 67626 via svnmerge from
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: https://origsvn.digium.com/svn/asterisk/trunk@67628 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-06-06 13:17:26 +00:00
Joshua Colp d84f78ac04 Minor clean up. Constify a few variables and use ast_strlen_zero in a few places.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@67063 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-06-04 17:32:41 +00:00
Joshua Colp af51be05a6 Merged revisions 47850 via svnmerge from
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: https://origsvn.digium.com/svn/asterisk/trunk@47851 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-11-20 15:55:58 +00:00
Joshua Colp ba15f8baf7 It's new directed pickup! This now features a more sane way of finding the 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: https://origsvn.digium.com/svn/asterisk/trunk@45234 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-10-16 16:26:23 +00:00
Matt O'Gorman ae8cc3e18b bug #8076 check option_debug before printing to debug channel.
patch provided in bugnote, with minor changes.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@44253 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-10-03 15:53:07 +00:00
Kevin P. Fleming 0a27d8bfe5 merge new_loader_completion branch, including (at least):
- 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: https://origsvn.digium.com/svn/asterisk/trunk@40722 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-08-21 02:11:39 +00:00
Russell Bryant 4103a6d8d7 fix a seg fault in this application if no context paramater is given
(issue #7571)


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@38118 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-07-23 05:20:59 +00:00
Kevin P. Fleming 472c1ca282 simplify autoconfig include mechanism (make tholo happy he can use lint again :-)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@32846 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-06-07 18:54:56 +00:00
Joshua Colp 0cc02feae9 Add PICKUPMARK support to app_directed_pickup (issue #7104 reported by thaeger)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@29463 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-22 16:08:23 +00:00
Luigi Rizzo e43bc6634d This rather large commit changes the way modules are loaded.
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: https://origsvn.digium.com/svn/asterisk/trunk@20003 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-14 14:08:19 +00:00
Kevin P. Fleming f10f427d49 since the module API is changing, it's a good time to const-ify the description() and key() return values
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@18552 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-08 22:01:19 +00:00
Joshua Colp 1749971753 Merged revisions 17905 via svnmerge from
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: https://origsvn.digium.com/svn/asterisk/trunk@17914 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-06 17:01:47 +00:00
Tilghman Lesher 53936916ec Bug 6417 - Allow retrieval of raw CDR values
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@10953 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-23 23:12:41 +00:00
Russell Bryant a0d438fb6c remove the uses of the deprecated STANDARD_LOCAL_USER
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@10241 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-15 20:11:56 +00:00
Matt O'Gorman 2aaffe48e4 allow app_directed_pickup to try to pickup
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: https://origsvn.digium.com/svn/asterisk/trunk@8057 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-13 17:02:15 +00:00
Russell Bryant a725468381 update doxygen docs to specify authors
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@7682 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-30 21:18:06 +00:00
Mark Spencer a965978a25 Fix segfault on directed pickup when no CDR is available (bug #5998)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@7541 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-12-20 09:56:55 +00:00
Kevin P. Fleming 2c65582b66 remove extraneous svn:executable properties
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@7221 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-29 18:24:39 +00:00
Russell Bryant 45c7589284 update the descriptions of a couple more apps
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@7073 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-11 15:52:55 +00:00
Russell Bryant 987b87662c make app_queue 1.2 jump compliant (issue #5580)
add missing includes of stdio.h
remove some unused and duplicate headers


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@7026 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-08 04:48:00 +00:00
Russell Bryant 31a804b97c issue #5605
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6979 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-11-06 15:09:47 +00:00
Russell Bryant 5187de9ab6 remove unnecessary checks before calls to ast_strlen_zero
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6864 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-10-26 19:48:14 +00:00
Russell Bryant 3453e3efa5 Doxygen documentation update from oej (issue #5505)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6847 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-10-24 20:12:06 +00:00
Russell Bryant 4aa7912057 Massive cleanups to applications for LOCAL_USER handling and some other things.
In general, LOCAL_USER_ADD/REMOVE should be the first/last thing called in an
application.  An exception is if there is some *fast* setup code that might
halt the execution of the application, such as checking to see if an argument
exists.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6832 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-10-19 18:19:02 +00:00
Russell Bryant 29829640bf it's a good idea to unregister everything before calling STANDARD_HANGUP_LOCALUSERS
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6828 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-10-18 22:52:21 +00:00
Mark Spencer c5a8178bb4 Fix directed pickup to a call that is up (bug #5425 with mods)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6743 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-10-11 21:08:26 +00:00
Mark Spencer 2e5537a4a0 Fix directed pickup deadlock bug (bug #5270)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6634 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-09-24 14:22:12 +00:00
Kevin P. Fleming b28847320d add Pickup() application (issue #4865)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6622 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2005-09-15 20:28:23 +00:00