dect
/
asterisk
Archived
13
0
Fork 0
Commit Graph

169 Commits

Author SHA1 Message Date
tilghman 63bb16a721 Merged revisions 214940 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
  r214940 | tilghman | 2009-08-31 11:16:52 -0500 (Mon, 31 Aug 2009) | 7 lines
  
  Also unlock the "other" channel, when returning, due to glare.
  (closes issue #15787)
   Reported by: tim_ringenbach
   Patches: 
         chan_local.diff uploaded by tim ringenbach (license 540)
   Tested by: tim_ringenbach
........


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@214945 f38db490-d61c-443f-a65b-d21fe96a405b
2009-08-31 16:18:33 +00:00
russell ac3b35dcc7 Merge the new Channel Event Logging (CEL) subsystem.
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-26 15:28:53 +00:00
mmichelson 94226ca1dc Fix some bad locking stemming from trying to forward a call to a non-existent
extension from a queue.



git-svn-id: http://svn.digium.com/svn/asterisk/trunk@200326 f38db490-d61c-443f-a65b-d21fe96a405b
2009-06-12 15:37:30 +00:00
mmichelson 95f584e2e9 Remove extra lock from local_indicate in connected line case.
Oh, and this fixes a deadlock I was seeing.



git-svn-id: http://svn.digium.com/svn/asterisk/trunk@198529 f38db490-d61c-443f-a65b-d21fe96a405b
2009-06-01 14:42:57 +00:00
mmichelson c3001c1521 Add missing unlock of local pvt.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@198511 f38db490-d61c-443f-a65b-d21fe96a405b
2009-06-01 14:19:49 +00:00
mmichelson a9296071c7 Add missing lock to local_indicate function for connected line frames.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@197701 f38db490-d61c-443f-a65b-d21fe96a405b
2009-05-28 18:48:56 +00:00
russell 89175b7e04 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: http://svn.digium.com/svn/asterisk/trunk@190423 f38db490-d61c-443f-a65b-d21fe96a405b
2009-04-24 14:04:26 +00:00
file c052997dcc Merged revisions 190286 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
  r190286 | file | 2009-04-23 16:13:18 -0300 (Thu, 23 Apr 2009) | 6 lines
  
  Fix a bug in chan_local glare hangup detection.
  
  If both sides of a Local channel were hung up at around the same time it was
  possible for one thread to destroy the local private structure and have the other thread
  immediately try to remove the already freed structure from the local channel list.
........


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@190287 f38db490-d61c-443f-a65b-d21fe96a405b
2009-04-23 19:15:30 +00:00
mmichelson 44dce428af Indicating connected line or redirecting updates were missing a call to lock the local_pvt.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@187830 f38db490-d61c-443f-a65b-d21fe96a405b
2009-04-10 18:56:52 +00:00
mmichelson 0fdeed176c ast_strdup failures aren't really failures if the original value was NULL.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@187714 f38db490-d61c-443f-a65b-d21fe96a405b
2009-04-10 16:26:48 +00:00
mmichelson f00656db9e 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: http://svn.digium.com/svn/asterisk/trunk@186525 f38db490-d61c-443f-a65b-d21fe96a405b
2009-04-03 22:41:46 +00:00
file 0eb1480fe0 Merge in the RTP engine API.
This API provides a generic way for multiple RTP stacks to be
integrated into Asterisk. Right now there is only one present, res_rtp_asterisk,
which is the existing Asterisk RTP stack. Functionality wise this commit
performs the same as previously. API documentation can be viewed in the
rtp_engine.h header file.

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


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@186078 f38db490-d61c-443f-a65b-d21fe96a405b
2009-04-02 17:20:52 +00:00
tilghman b4eb19c371 Merged revisions 182208 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
  r182208 | tilghman | 2009-03-16 10:39:15 -0500 (Mon, 16 Mar 2009) | 7 lines
  
  Fixup glare detection, to fix a memory leak of a local pvt structure.
  (closes issue #14656)
   Reported by: caspy
   Patches: 
         20090313__bug14656__2.diff.txt uploaded by tilghman (license 14)
   Tested by: caspy
........


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@182211 f38db490-d61c-443f-a65b-d21fe96a405b
2009-03-16 15:50:55 +00:00
tilghman 4b22e504ec Prior to masquerade, move the group definitions to the channel performing the
masq, so that the group count lingers past the bridge.
(closes issue #14275)
 Reported by: kowalma
 Patches: 
       20090216__bug14275.diff.txt uploaded by Corydon76 (license 14)
 Tested by: kowalma


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@176642 f38db490-d61c-443f-a65b-d21fe96a405b
2009-02-17 21:14:18 +00:00
oej 1c2618a19a Revert two lines that was extra, but only on fridays.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@172319 f38db490-d61c-443f-a65b-d21fe96a405b
2009-01-29 17:10:43 +00:00
oej 10712d118c Fix "cancel answered elsewhere" through app_queue with members in chan_local.
Also, implement a private cause code (as suggested by Tilghman). This works with
chan_sip, but doesn't propagate through chan_local.



git-svn-id: http://svn.digium.com/svn/asterisk/trunk@172318 f38db490-d61c-443f-a65b-d21fe96a405b
2009-01-29 17:08:22 +00:00
mmichelson 696e944241 Merged revisions 169210 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r169210 | mmichelson | 2009-01-19 09:52:15 -0600 (Mon, 19 Jan 2009) | 13 lines

Prevent a crash in chan_local due to a potential NULL pointer dereference

Move the check for if both channels on a local_pvt have generators to below
where p->chan is checked for NULLity (NULLness?). This prevents a crash from
occurring if p->chan is NULL.

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


........


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@169211 f38db490-d61c-443f-a65b-d21fe96a405b
2009-01-19 15:54:06 +00:00
tilghman bcd3e8fe43 Merged revisions 166953 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
  r166953 | tilghman | 2008-12-31 13:20:35 -0600 (Wed, 31 Dec 2008) | 5 lines
  
  Also inherit the musiconhold class.
  (Closes #14153)
  Reported by: Jerry Geis, via the users list.
  Patch by: me (license 14)
........


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@166954 f38db490-d61c-443f-a65b-d21fe96a405b
2008-12-31 19:34:28 +00:00
mmichelson 135ce47598 Merged revisions 157305 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r157305 | mmichelson | 2008-11-18 12:25:55 -0600 (Tue, 18 Nov 2008) | 12 lines

Fix a crash in the end_bridge_callback of app_dial and
app_followme which would occur at the end of an attended
transfer. The error occurred because we initially stored
a pointer to an ast_channel which then was hung up due
to a masquerade.

This commit adds a "fixup" callback to the bridge_config
structure to allow for end_bridge_callback_data to be
changed in the case that a new channel pointer is needed
for the end_bridge_callback.


........


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@157306 f38db490-d61c-443f-a65b-d21fe96a405b
2008-11-18 18:31:08 +00:00
tilghman ca1ba062f9 Merged revisions 152922 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
  r152922 | tilghman | 2008-10-30 14:43:38 -0500 (Thu, 30 Oct 2008) | 6 lines
  
  Unlock before returning, when extension doesn't exist.
  (closes issue #13807)
   Reported by: eliel
   Patches: 
         chan_local.c.patch uploaded by eliel (license 64)
........


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@152923 f38db490-d61c-443f-a65b-d21fe96a405b
2008-10-30 19:45:52 +00:00
tilghman 84e7c5bef1 Merged revisions 152215 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
  r152215 | tilghman | 2008-10-27 16:32:00 -0500 (Mon, 27 Oct 2008) | 6 lines
  
  Inherit ALL elements of CallerID across a local channel.
  (closes issue #13368)
   Reported by: Peter Schlaile
   Patches: 
         20080826__bug13368.diff.txt uploaded by Corydon76 (license 14)
........


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@152216 f38db490-d61c-443f-a65b-d21fe96a405b
2008-10-27 21:34:04 +00:00
mmichelson 234f067c8c Merged revisions 148912 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r148912 | mmichelson | 2008-10-14 12:33:38 -0500 (Tue, 14 Oct 2008) | 9 lines

Deadlock prevention in chan_local.

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


........


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@148913 f38db490-d61c-443f-a65b-d21fe96a405b
2008-10-14 17:38:06 +00:00
tilghman 142550b909 Merged revisions 146711 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
  r146711 | tilghman | 2008-10-06 11:51:21 -0500 (Mon, 06 Oct 2008) | 9 lines
  
  Check whether an extension exists in the _call method, rather than the _alloc
  method, because we need to evaluate the callerid (since that data affects
  whether an extension exists).
  (closes issue #13343)
   Reported by: efutch
   Patches: 
         20080915__bug13343.diff.txt uploaded by Corydon76 (license 14)
   Tested by: efutch
........


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@146713 f38db490-d61c-443f-a65b-d21fe96a405b
2008-10-06 16:52:14 +00:00
jpeeler cdf54b5bc1 Merged revisions 142927 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r142927 | jpeeler | 2008-09-12 17:22:28 -0500 (Fri, 12 Sep 2008) | 6 lines

(closes issue #12965)
Reported by: rlsutton2

Prevents local channels from playing MOH at each other which was causing ast_generic_bridge to loop much faster.


........


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@142929 f38db490-d61c-443f-a65b-d21fe96a405b
2008-09-12 22:24:13 +00:00
tilghman f823a9e252 Revert half of the fix, as this part may have been unnecessary (related to issue #12914)
Requested here: http://lists.digium.com/pipermail/asterisk-dev/2008-June/033658.html


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@125853 f38db490-d61c-443f-a65b-d21fe96a405b
2008-06-27 16:00:05 +00:00
tilghman 31c979ade9 Merged revisions 125740 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r125740 | tilghman | 2008-06-27 07:19:39 -0500 (Fri, 27 Jun 2008) | 7 lines

Add proper deadlock avoidance.
(closes issue #12914)
 Reported by: ozan
 Patches: 
       20080625__bug12914.diff.txt uploaded by Corydon76 (license 14)
 Tested by: ozan

........


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@125741 f38db490-d61c-443f-a65b-d21fe96a405b
2008-06-27 12:28:38 +00:00
tilghman 6d937eee36 More expansion of the deadlock avoidance macro, including a macro to do locking
of the channel lock


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@125020 f38db490-d61c-443f-a65b-d21fe96a405b
2008-06-25 02:34:11 +00:00
tilghman 593421a1e9 Merged revisions 124315 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r124315 | tilghman | 2008-06-20 15:16:02 -0500 (Fri, 20 Jun 2008) | 8 lines

When using a Local channel, started by a call file, with a destination of an
AGI script, the AGI script does not always get notified of a hangup if the
underlying channel hangs up early.
(closes issue #11833)
 Reported by: IgorG
 Patches: 
       local_hangup-v1.diff uploaded by IgorG (license 20)

........


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@124316 f38db490-d61c-443f-a65b-d21fe96a405b
2008-06-20 20:17:04 +00:00
russell f14225c2fc Merged revisions 121078 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r121078 | russell | 2008-06-07 09:10:56 -0500 (Sat, 07 Jun 2008) | 7 lines

Don't run LIST_HEAD_DESTROY on a STATIC list

(closes issue #12807)
Reported by: ys
Patches: 
      chan_agent_local.diff uploaded by ys (license 281)

........


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@121079 f38db490-d61c-443f-a65b-d21fe96a405b
2008-06-07 14:18:44 +00:00
mvanbaak c1210321e7 - revert change to ast_queue_hangup and create ast_queue_hangup_with_cause
- make data member of the ast_frame struct a named union instead of a void

Recently the ast_queue_hangup function got a new parameter, the hangupcause
Feedback came in that this is no good and that instead a new function should be created.
This I did.

The hangupcause was stored in the seqno member of the ast_frame struct. This is not very
elegant, and since there's already a data member that one should be used.
Problem is, this member was a void *.
Now it's a named union so it can hold a pointer, an uint32 and there's a padding in case someone
wants to store another type in there in the future.

This commit is so massive, because all ast_frame.data uses have to be
altered to ast_frame.data.data

Thanks russellb and kpfleming for the feedback.

(closes issue #12674)
Reported by: mvanbaak


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@117802 f38db490-d61c-443f-a65b-d21fe96a405b
2008-05-22 16:29:54 +00:00
russell 4004787b02 Merged revisions 116038 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r116038 | russell | 2008-05-13 16:17:23 -0500 (Tue, 13 May 2008) | 24 lines

Fix a deadlock involving channel autoservice and chan_local that was debugged
and fixed by mmichelson and me.

We observed a system that had a bunch of threads stuck in ast_autoservice_stop().
The reason these threads were waiting around is because this function waits to
ensure that the channel list in the autoservice thread gets rebuilt before the
stop() function returns.  However, the autoservice thread was also locked, so
the autoservice channel list was never getting rebuilt.

The autoservice thread was stuck waiting for the channel lock on a local channel.
However, the local channel was locked by a thread that was stuck in the autoservice
stop function.

It turned out that the issue came down to the local_queue_frame() function in
chan_local.  This function assumed that one of the channels passed in as an
argument was locked when called.  However, that was not always the case.  There
were multiple cases in which this channel was not locked when the function was
called.  We fixed up chan_local to indicate to this function whether this channel
was locked or not.  The previous assumption had caused local_queue_frame() to
improperly return with the channel locked, where it would then never get unlocked.

(closes issue #12584)
(related to issue #12603)

........


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@116039 f38db490-d61c-443f-a65b-d21fe96a405b
2008-05-13 21:18:55 +00:00
mvanbaak 94979a8bde Pass the hangup cause all the way to the calling app/channel.
(closes issue #11328)
Reported by: rain
Patches:
      20071207__pass_cause_in_hangup_control_frame.diff.txt uploaded by Corydon76 (license 14)
brought up-to-date to trunk by me


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@114637 f38db490-d61c-443f-a65b-d21fe96a405b
2008-04-24 22:16:48 +00:00
mmichelson e265465227 Merged revisions 114624 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r114624 | mmichelson | 2008-04-24 15:04:24 -0500 (Thu, 24 Apr 2008) | 10 lines

Resolve a deadlock in chan_local by releasing the channel lock
temporarily.

(closes issue #11712)
Reported by: callguy
Patches:
      11712.patch uploaded by putnopvut (license 60)
Tested by: acunningham


........


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@114625 f38db490-d61c-443f-a65b-d21fe96a405b
2008-04-24 20:06:06 +00:00
tilghman 08d93b8994 Merged revisions 114621 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r114621 | tilghman | 2008-04-24 14:53:36 -0500 (Thu, 24 Apr 2008) | 4 lines

Ensure that when we set the accountcode, it actually shows up in the CDR.
(Fix for AMI Originate)
(Closes issue #12007)

........


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@114622 f38db490-d61c-443f-a65b-d21fe96a405b
2008-04-24 19:54:57 +00:00
file 730161f52d During hangup it is possible for p->chan or p->owner to be NULL, so just return what the channel is bridged to instead of what they are *really* bridged to. Thanks Matt Nicholson!
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@114109 f38db490-d61c-443f-a65b-d21fe96a405b
2008-04-14 15:36:02 +00:00
file 450035f0f4 A 'b' option has been added which causes chan_local to return the actual channel that is behind it when queried. This is useful for transfer scenarios as the actual channel will be transferred, not the Local channel. If you have been using Local channels as queue members and having issues when the agent did a blind transfer this option may solve the issue.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@114049 f38db490-d61c-443f-a65b-d21fe96a405b
2008-04-10 20:28:40 +00:00
russell 64ddee2d67 Merged revisions 105570 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r105570 | russell | 2008-03-03 11:16:53 -0600 (Mon, 03 Mar 2008) | 3 lines

In the case of an ast_channel allocation failure, take the local_pvt out of the
pvt list before destroying it.

........


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@105571 f38db490-d61c-443f-a65b-d21fe96a405b
2008-03-03 17:17:27 +00:00
russell 5a5b389526 Merged revisions 105568 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r105568 | russell | 2008-03-03 11:05:16 -0600 (Mon, 03 Mar 2008) | 3 lines

Fix a potential memory leak of the local_pvt struct when ast_channel allocation
fails.  Also, in passing, centralize the code necessary to destroy a local_pvt.

........


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@105569 f38db490-d61c-443f-a65b-d21fe96a405b
2008-03-03 17:06:35 +00:00
mmichelson 9139e10c77 Merged revisions 103904 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r103904 | mmichelson | 2008-02-20 15:40:08 -0600 (Wed, 20 Feb 2008) | 6 lines

Fix a crash if the channel becomes NULL while attempting to lock it.

(closes issue #12039)
Reported by: danpwi


........


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@103908 f38db490-d61c-443f-a65b-d21fe96a405b
2008-02-20 21:41:31 +00:00
russell 0892327683 Merged revisions 103821 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r103821 | russell | 2008-02-19 14:02:49 -0600 (Tue, 19 Feb 2008) | 8 lines

Account for the fact that the "other" channel can disappear while the local pvt
is not locked.

(fixes a problem introduced in rev 100581)
(closes issue #12012)
Reported by: stevedavies
Patch by me

........


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@103822 f38db490-d61c-443f-a65b-d21fe96a405b
2008-02-19 20:06:23 +00:00
russell b58476cddc Merged revisions 100581 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r100581 | russell | 2008-01-28 11:15:41 -0600 (Mon, 28 Jan 2008) | 9 lines

Make some deadlock related fixes.  These bugs were discovered and reported
internally at Digium by Steve Pitts.
 - Fix up chan_local to ensure that the channel lock is held before the local
   pvt lock.
 - Don't hold the channel lock when executing the timing function, as it can
   cause a deadlock when using chan_local.  This actually changes the code back
   to be how it was before the change for issue #10765.  But, I added some other
   locking that I think will prevent the problem reported there, as well.

........


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@100582 f38db490-d61c-443f-a65b-d21fe96a405b
2008-01-28 17:21:24 +00:00
oej 0c22830419 Merged revisions 99594 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r99594 | oej | 2008-01-22 18:41:57 +0100 (Tis, 22 Jan 2008) | 3 lines

Add more dependencies on chan_local and add a note to the description of chan_local
so that people don't disable it in menuselect just to clean up.

........


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@99596 f38db490-d61c-443f-a65b-d21fe96a405b
2008-01-22 17:46:43 +00:00
mmichelson 54710096e0 Merged revisions 99426 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r99426 | mmichelson | 2008-01-21 17:55:26 -0600 (Mon, 21 Jan 2008) | 12 lines

Fixing an issue wherein monitoring local channels was not possible. During a channel
masquerade, the monitors on the two channels involved are swapped. In 99% of the cases
this results in the desired effect. However, if monitoring a local channel, this caused
the monitor which was on the local channel to get moved onto a channel which is immediately
hung up after the masquerade has completed. By swapping the monitors prior to the masquerade, 
we avoid the problem by tricking the masquerade into placing the monitor back onto the channel
where we want it.

During the investigation of the issue, the channel's monitor was the only thing that was swapped
in such a manner which did not make sense to have done. All other variable swapping made sense.


........


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@99427 f38db490-d61c-443f-a65b-d21fe96a405b
2008-01-21 23:56:40 +00:00
mmichelson 3b25430d74 Merged revisions 98964 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r98964 | mmichelson | 2008-01-16 11:20:11 -0600 (Wed, 16 Jan 2008) | 10 lines

Fix a deadlock in chan_local in local_hangup. There was contention because
the local_pvt was held and it was attempting to lock a channel, which is the
incorrect locking order.

(closes issue #11730)
Reported by: UDI-Doug
Patches:
      11730.patch uploaded by putnopvut (license 60)
	  Tested by: UDI-Doug

........


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@98965 f38db490-d61c-443f-a65b-d21fe96a405b
2008-01-16 17:21:49 +00:00
mmichelson 4128bac7a9 Merged revisions 90735 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r90735 | mmichelson | 2007-12-03 17:12:17 -0600 (Mon, 03 Dec 2007) | 22 lines

A big one...

This is the merge of the forward-loop branch. The main change here is that call-forwards can no longer loop.
This is accomplished by creating a datastore on the calling channel which has a linked list of all devices
dialed. If a forward happens, then the local channel which is created inherits the datastore. If, through this
progression of forwards and datastore inheritance, a device is attempted to be dialed a second time, it will simply
be skipped and a warning message will be printed to the CLI. After the dialing has been completed, the datastore
is detached from the channel and destroyed.

This change also introduces some side effects to the code which I shall enumerate here:

1. Datastore inheritance has been backported from trunk into 1.4
2. A large chunk of code has been removed from app_dial. This chunk is the section of code
   which handles the call forward case after the channel has been requested but before it has
   been called. This was removed because call-forwarding still works fine without it, it makes the
   code less error-prone should it need changing, and it made this set of changes much less painful
   to just have the forwarding handled in one place in each module.
3. Two new files, global_datastores.h and .c have been added. These are necessary since the datastore
   which is attached to the channel may be created and attached in either app_dial or app_queue, so they
   need a common place to find the datastore info. This approach was taken in case similar datastores are
   needed in the future, there will be a common place to add them.

........


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@90873 f38db490-d61c-443f-a65b-d21fe96a405b
2007-12-04 17:08:36 +00:00
rizzo 150b2c22ef remove another set of redundant #include "asterisk/options.h"
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@89512 f38db490-d61c-443f-a65b-d21fe96a405b
2007-11-21 23:24:55 +00:00
rizzo 9cf442d7f7 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: http://svn.digium.com/svn/asterisk/trunk@89424 f38db490-d61c-443f-a65b-d21fe96a405b
2007-11-19 18:52:04 +00:00
rizzo 3136f24f36 trim more redundant headers
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@89384 f38db490-d61c-443f-a65b-d21fe96a405b
2007-11-17 16:18:53 +00:00
rizzo ba761e2427 more removal of duplicate #include lines
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@89349 f38db490-d61c-443f-a65b-d21fe96a405b
2007-11-17 00:02:33 +00:00
rizzo 883346d64a 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: http://svn.digium.com/svn/asterisk/trunk@89333 f38db490-d61c-443f-a65b-d21fe96a405b
2007-11-16 20:04:58 +00:00