Commit Graph

168 Commits

Author SHA1 Message Date
David Vossel
df0f9b43ff Merged revisions 259870 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk

................
  r259870 | dvossel | 2010-04-28 16:20:03 -0500 (Wed, 28 Apr 2010) | 39 lines
  
  Merged revisions 259858 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.4
  
  ........
    r259858 | dvossel | 2010-04-28 16:16:03 -0500 (Wed, 28 Apr 2010) | 33 lines
    
    resolves deadlocks in chan_local
    
    Issue_1.
    In the local_hangup() 3 locks must be held at the same time... pvt, pvt->chan,
    and pvt->owner.  Proper deadlock avoidance is done when the channel to hangup
    is the outbound chan_local channel, but when it is not the outbound channel we
    have an issue... We attempt to do deadlock avoidance only on the tech pvt, when
    both the tech pvt and the pvt->owner are locked coming into that loop.  By
    never giving up the pvt->owner channel deadlock avoidance is not entirely possible.
    This patch resolves that by doing deadlock avoidance on both the pvt->owner and the pvt
    when trying to get the pvt->chan lock.
    
    Issue_2.
    ast_prod() is used in ast_activate_generator() to queue a frame on the channel
    and make the channel's read function get called.  This function is used in
    ast_activate_generator() while the channel is locked, which mean's the channel
    will have a lock both from the generator code and the frame_queue code by the
    time it gets to chan_local.c's local_queue_frame code... local_queue_frame
    contains some of the same crazy deadlock avoidance that local_hangup requires,
    and this recursive lock prevents that deadlock avoidance from happening correctly.
    This patch removes ast_prod() from the channel lock so only one lock is held during
    the local_queue_frame function.
    
    (closes issue #17185)
    Reported by: schmoozecom
    Patches:
          issue_17185_v1.diff uploaded by dvossel (license 671)
          issue_17185_v2.diff uploaded by dvossel (license 671)
    Tested by: schmoozecom, GameGamer43
    
    Review: https://reviewboard.asterisk.org/r/631/
  ........
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@259930 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-04-28 21:33:16 +00:00
Russell Bryant
371a5d2a39 Merged revisions 256015 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk

................
  r256015 | russell | 2010-04-02 18:46:45 -0500 (Fri, 02 Apr 2010) | 16 lines
  
  Merged revisions 256014 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.4
  
  ........
    r256014 | russell | 2010-04-02 18:45:56 -0500 (Fri, 02 Apr 2010) | 9 lines
    
    Resolve a deadlock that occurs due to a pointless call to ast_bridged_channel()
    
    (closes issue #16840)
    Reported by: bzing2
    Patches:
          patch.txt uploaded by bzing2 (license 902)
          issue_16840.rev1.diff uploaded by russell (license 2)
    Tested by: bzing2, russell
  ........
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@256017 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-04-02 23:47:58 +00:00
David Vossel
8da2b4c813 Merged revisions 249893 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk

........
  r249893 | dvossel | 2010-03-02 13:08:38 -0600 (Tue, 02 Mar 2010) | 11 lines
  
  fixes adaptive jitterbuffer configuration
  
  When configuring the adaptive jitterbuffer, the target_extra
  value not only could not be set from the configuration, but was
  not even being set to its proper default.  This value is required
  in order for the adaptive jitterbuffer to work correctly.  To resolve
  this a config option has been added to expose this value to the conf
  files, and a default value is provided when no config specific value
  is present.
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@249896 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-03-02 19:15:23 +00:00
Jeff Peeler
9c0f709a50 Merged revisions 249538 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk

................
  r249538 | jpeeler | 2010-03-01 11:11:31 -0600 (Mon, 01 Mar 2010) | 18 lines
  
  Merged revisions 249536 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.4
  
  ........
    r249536 | jpeeler | 2010-03-01 11:02:03 -0600 (Mon, 01 Mar 2010) | 11 lines
    
    Modify queued frames from local channels to not set the other side to up
    
    In this case, attended transfers were broken due to ast_feature_request_and_dial
    detecting the channel being set to up before the answer frame could be read and
    therefore failing to mark the channel as ready. This fix is a regression fix for
    244785, which should continue to work properly as well.
    
    (closes issue #16816)
    Reported by: jamhed
    Tested by: jamhed, corruptor
  ........
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@249548 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-03-01 17:19:07 +00:00
Jeff Peeler
391be9df5f Merged revisions 246070 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk

........
  r246070 | jpeeler | 2010-02-10 10:47:37 -0600 (Wed, 10 Feb 2010) | 22 lines
  
  Change channel state on local channels for busy,answer,ring.
    
  Previously local channels channel state never changed. This became problematic
  when the state of the other side of the local channel was lost, for example
  during a masquerade. Changing the state of the local channel allows for the
  scenario to be detected when the channel state is set to ringing, but the peer
  isn't ringing. The specific problem scenario is described in 164201. Although
  this was noted on one of the issues, here is the tested dialplan verified to
  work:
  
  exten => 9700,1,Dial(Local/*9700@default&Local/0009700@default)
  
  exten => *9700,1,Set(GLOBAL(TESTCHAN)=${CHANNEL:0:${MATH(${LEN(${CHANNEL})}-1):0:2}}1)
  exten => *9700,n,wait(3) ;3 works, 1 did not
  exten => *9700,n,Dial(SIP/5001)
  
  exten => 0009700,1,Wait(1) ;1 works, 3 did not
  exten => 0009700,n,ChannelRedirect(${TESTCHAN},parkedcalls,701,1)
  
  (closes issue #14992)
  Reported by: davidw
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@246072 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-02-10 16:55:27 +00:00
Tilghman Lesher
8fef380860 Merged revisions 244071 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk

................
  r244071 | tilghman | 2010-02-01 11:53:39 -0600 (Mon, 01 Feb 2010) | 22 lines
  
  Merged revisions 244070 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.4
  
  ........
    r244070 | tilghman | 2010-02-01 11:46:31 -0600 (Mon, 01 Feb 2010) | 16 lines
    
    Revert previous chan_local fix (r236981) and fix instead by destroying expired frames in the queue.
    
    (closes issue #16525)
     Reported by: kobaz
     Patches: 
           20100126__issue16525.diff.txt uploaded by tilghman (license 14)
           20100129__issue16525__1.6.0.diff.txt uploaded by tilghman (license 14)
     Tested by: kobaz, atis
    
    (closes issue #16581)
     Reported by: ZX81
    
    (closes issue #16681)
     Reported by: alexr1
  ........
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@244074 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-02-01 18:01:51 +00:00
Tilghman Lesher
32cdfa1923 Merged revisions 237319 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk

................
  r237319 | tilghman | 2010-01-04 10:20:03 -0600 (Mon, 04 Jan 2010) | 10 lines
  
  Merged revisions 237318 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.4
  
  ........
    r237318 | tilghman | 2010-01-04 10:18:59 -0600 (Mon, 04 Jan 2010) | 3 lines
    
    It's also possible for the Local channel to directly execute an Application.
    Reviewboard: https://reviewboard.asterisk.org/r/452/
  ........
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@237321 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2010-01-04 16:21:35 +00:00
Tilghman Lesher
a8df43f94f Merged revisions 236982 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk

................
  r236982 | tilghman | 2009-12-30 15:59:18 -0600 (Wed, 30 Dec 2009) | 16 lines
  
  Merged revisions 236981 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.4
  
  ........
    r236981 | tilghman | 2009-12-30 15:57:10 -0600 (Wed, 30 Dec 2009) | 9 lines
    
    Don't queue frames to channels that have no means to process them.
    (closes issue #15609)
     Reported by: aragon
     Patches: 
           20091230__issue16521__1.4__chan_local_only.diff.txt uploaded by tilghman (license 14)
     Tested by: aragon
     
    Review: https://reviewboard.asterisk.org/r/452/
  ........
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@236984 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-12-30 22:00:37 +00:00
Joshua Colp
09c7fb67c5 Merged revisions 230039 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk

................
  r230039 | file | 2009-11-13 13:44:53 -0600 (Fri, 13 Nov 2009) | 16 lines
  
  Merged revisions 230038 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.4
  
  ........
    r230038 | file | 2009-11-13 13:44:07 -0600 (Fri, 13 Nov 2009) | 9 lines
    
    Fix a crash caused by two threads thinking they should both free the
    chan_local private structure when only one should.
    
    (closes issue #15314)
    Reported by: sroberts
    Patches:
          Issue15314_Move_Nulling_owner.patch uploaded by davidw (license 780)
    Tested by: davidw, lottc
  ........
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@230041 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-11-13 19:45:35 +00:00
Terry Wilson
42048030e0 Merged revisions 229015 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk

........
  r229015 | twilson | 2009-11-09 16:50:22 -0600 (Mon, 09 Nov 2009) | 8 lines
  
  Don't crash when bridge->tech_pvt == NULL
  
  This is a similar solution to what is in place for chan_agent
  
  (closes issue #16003)
  Reported by: atis
  Tested by: twilson
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@229016 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-11-09 22:52:43 +00:00
Joshua Colp
bf7f97a3ff Merged revisions 226532 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk

................
  r226532 | file | 2009-10-29 15:13:42 -0300 (Thu, 29 Oct 2009) | 13 lines
  
  Merged revisions 226531 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.4
  
  ........
    r226531 | file | 2009-10-29 15:11:26 -0300 (Thu, 29 Oct 2009) | 6 lines
    
    Add an option to enabling passing music on hold start and stop requests through instead of
    acting on them in chan_local.
    
    (closes issue #14709)
    Reported by: dimas
  ........
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@226534 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-10-29 18:15:41 +00:00
Tilghman Lesher
5b9cc171ab Merged revisions 214945 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk

................
  r214945 | tilghman | 2009-08-31 11:18:33 -0500 (Mon, 31 Aug 2009) | 14 lines
  
  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: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@214958 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-08-31 16:22:02 +00:00
Joshua Colp
988bf263dd Merged revisions 190287 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk

................
  r190287 | file | 2009-04-23 16:15:30 -0300 (Thu, 23 Apr 2009) | 13 lines
  
  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: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@190291 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-04-23 19:17:36 +00:00
Tilghman Lesher
37db651ba8 Merged revisions 182211,182278 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk

................
  r182211 | tilghman | 2009-03-16 10:50:55 -0500 (Mon, 16 Mar 2009) | 14 lines
  
  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
  ........
................
  r182278 | tilghman | 2009-03-16 12:33:38 -0500 (Mon, 16 Mar 2009) | 7 lines
  
  Fix an off-by-one error in the FILE() function, and extend FILE()'s length parameter to work like variable substitution.
  Previously, FILE() returned one less character than specified, due to the
  terminating NULL.  Both the offset and length parameters now behave
  identically to the way variable substitution offsets and lengths also work.
  (closes issue #14670)
   Reported by: BMC
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@182280 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-03-16 17:38:50 +00:00
Tilghman Lesher
75ff7a609d Merged revisions 176592,176642 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk

........
  r176592 | tilghman | 2009-02-17 12:49:20 -0600 (Tue, 17 Feb 2009) | 4 lines
  
  Add assertions in the quest to track down a refcount leak.
  (closes issue #14485)
   Reported by: davevg
........
  r176642 | tilghman | 2009-02-17 15:14:18 -0600 (Tue, 17 Feb 2009) | 8 lines
  
  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: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@176644 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-02-17 21:16:53 +00:00
Mark Michelson
ec4dfc2fa6 Merged revisions 169211 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk

................
r169211 | mmichelson | 2009-01-19 09:54:06 -0600 (Mon, 19 Jan 2009) | 21 lines

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: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@169213 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-01-19 15:55:29 +00:00
Tilghman Lesher
27c0f99cb4 Merged revisions 166954 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk

................
  r166954 | tilghman | 2008-12-31 13:34:28 -0600 (Wed, 31 Dec 2008) | 12 lines
  
  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: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@166957 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-12-31 19:38:10 +00:00
Mark Michelson
892f98a1e6 Merged revisions 157306 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk

................
r157306 | mmichelson | 2008-11-18 12:31:08 -0600 (Tue, 18 Nov 2008) | 20 lines

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: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@157308 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-11-18 18:32:54 +00:00
Tilghman Lesher
1d4fe69d0a Merged revisions 152923 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk

................
  r152923 | tilghman | 2008-10-30 14:45:52 -0500 (Thu, 30 Oct 2008) | 13 lines
  
  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: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@152924 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-10-30 19:48:06 +00:00
Tilghman Lesher
3060540103 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: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@152217 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-10-27 21:53:04 +00:00
Mark Michelson
242e1079ff Merged revisions 148913 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk

................
r148913 | mmichelson | 2008-10-14 12:38:06 -0500 (Tue, 14 Oct 2008) | 17 lines

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: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@148915 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-10-14 17:39:39 +00:00
Tilghman Lesher
0fd7610e67 Merged revisions 146713 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk

................
  r146713 | tilghman | 2008-10-06 11:52:14 -0500 (Mon, 06 Oct 2008) | 16 lines
  
  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: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@146715 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-10-06 16:54:45 +00:00
Jeff Peeler
b67b873ca6 Merged revisions 142929 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk

................
r142929 | jpeeler | 2008-09-12 17:24:13 -0500 (Fri, 12 Sep 2008) | 14 lines

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: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@142935 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-09-12 22:25:52 +00:00
Tilghman Lesher
ed8698e493 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: https://origsvn.digium.com/svn/asterisk/trunk@125853 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-06-27 16:00:05 +00:00
Tilghman Lesher
2dc4597f79 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: https://origsvn.digium.com/svn/asterisk/trunk@125741 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-06-27 12:28:38 +00:00
Tilghman Lesher
94c4089f4e More expansion of the deadlock avoidance macro, including a macro to do locking
of the channel lock


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@125020 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-06-25 02:34:11 +00:00
Tilghman Lesher
bb03680941 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: https://origsvn.digium.com/svn/asterisk/trunk@124316 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-06-20 20:17:04 +00:00
Russell Bryant
96233af5dc 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: https://origsvn.digium.com/svn/asterisk/trunk@121079 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-06-07 14:18:44 +00:00
Michiel van Baak
f1e9371da8 - 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: https://origsvn.digium.com/svn/asterisk/trunk@117802 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-05-22 16:29:54 +00:00
Russell Bryant
739a3c88a5 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: https://origsvn.digium.com/svn/asterisk/trunk@116039 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-05-13 21:18:55 +00:00
Michiel van Baak
08e674bce0 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: https://origsvn.digium.com/svn/asterisk/trunk@114637 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-04-24 22:16:48 +00:00
Mark Michelson
2602b21b39 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: https://origsvn.digium.com/svn/asterisk/trunk@114625 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-04-24 20:06:06 +00:00
Tilghman Lesher
ea9014beac 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: https://origsvn.digium.com/svn/asterisk/trunk@114622 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-04-24 19:54:57 +00:00
Joshua Colp
6fad8249f5 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: https://origsvn.digium.com/svn/asterisk/trunk@114109 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-04-14 15:36:02 +00:00
Joshua Colp
a08c4b2064 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: https://origsvn.digium.com/svn/asterisk/trunk@114049 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-04-10 20:28:40 +00:00
Russell Bryant
a584b51dd9 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: https://origsvn.digium.com/svn/asterisk/trunk@105571 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-03-03 17:17:27 +00:00
Russell Bryant
bc3f768547 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: https://origsvn.digium.com/svn/asterisk/trunk@105569 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-03-03 17:06:35 +00:00
Mark Michelson
b895cda7a3 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: https://origsvn.digium.com/svn/asterisk/trunk@103908 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-02-20 21:41:31 +00:00
Russell Bryant
85cd43c3c9 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: https://origsvn.digium.com/svn/asterisk/trunk@103822 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-02-19 20:06:23 +00:00
Russell Bryant
1c74c549d7 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: https://origsvn.digium.com/svn/asterisk/trunk@100582 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-28 17:21:24 +00:00
Olle Johansson
949bb30d03 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: https://origsvn.digium.com/svn/asterisk/trunk@99596 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-22 17:46:43 +00:00
Mark Michelson
c48b43e2d8 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: https://origsvn.digium.com/svn/asterisk/trunk@99427 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-21 23:56:40 +00:00
Mark Michelson
343949b741 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: https://origsvn.digium.com/svn/asterisk/trunk@98965 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-16 17:21:49 +00:00
Mark Michelson
c52d8a1cd5 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: https://origsvn.digium.com/svn/asterisk/trunk@90873 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-04 17:08:36 +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
1e6489a175 trim more redundant headers
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89384 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-17 16:18:53 +00:00
Luigi Rizzo
d82a631f9c more removal of duplicate #include lines
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89349 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-17 00:02:33 +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
Jason Parker
c472a68a8a Correctly use defined return values in (some) load_module functions.
(issue #11096)
Patches:
      chan_agent.c.patch uploaded by eliel (license 64)
      chan_local.c.patch uploaded by eliel (license 64)
      chan_features.c.patch uploaded by eliel (license 64)
      chan_zap.c.patch uploaded by eliel (license 64)
      res_monitor.c.patch uploaded by eliel (license 64)
      res_realtime.c.patch uploaded by eliel (license 64)
      res_crypto.c.patch uploaded by eliel (license 64)


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@87202 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-26 21:37:02 +00:00