Commit Graph

110 Commits

Author SHA1 Message Date
Mark Michelson
6835ca7d03 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/branches/1.4@103904 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-02-20 21:40:08 +00:00
Russell Bryant
8c9a6024d9 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/branches/1.4@103821 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-02-19 20:02:49 +00:00
Russell Bryant
ef78f25e8a 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/branches/1.4@100581 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-28 17:15:41 +00:00
Olle Johansson
48066f4cfd 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/branches/1.4@99594 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-22 17:41:57 +00:00
Mark Michelson
cdd8c1a3c3 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/branches/1.4@99426 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-21 23:55:26 +00:00
Mark Michelson
7decb0d343 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/branches/1.4@98964 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-16 17:20:11 +00:00
Mark Michelson
7b052b78e1 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/branches/1.4@90735 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-03 23:12:17 +00:00
Jason Parker
e9ab13fa81 Re-add the setting of callerid name and number.
Issue 10485, reported by and fix explained by paradise.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@79902 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-17 17:44:22 +00:00
Joshua Colp
9a35428295 (closes issue #10437)
Reported by: haklin
Don't set the callerid name and number a second time on a newly created channel. ast_channel_alloc itself already sets it and setting it twice would cause a memory leak.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@79174 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-13 14:18:04 +00:00
Joshua Colp
f912c6ba71 Merged revisions 73318 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r73318 | file | 2007-07-05 10:26:02 -0300 (Thu, 05 Jul 2007) | 2 lines

Actually check to make sure a PBX was started on one of the Local channels instead of blindly assuming it was. (issue #10112 reported by makoto)

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@73319 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-05 13:27:40 +00:00
Steve Murphy
8c635fb2c1 As per 9570, worrisome CDR warnings have been removed, that are either not helpful, or not relevant.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@64193 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-05-14 13:58:42 +00:00
Steve Murphy
7d5a79a0b9 This is a big improvement over the current CDR fixes. It may still need refinement, but this won't have as many folks bothered.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@60989 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-04-09 18:32:07 +00:00
Tilghman Lesher
1d3fbc214a Merged revisions 60846 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r60846 | tilghman | 2007-04-08 21:37:18 -0500 (Sun, 08 Apr 2007) | 2 lines

Bug 9505 - If the return value for local_queue_frame is set, then p->lock is no longer valid.

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@60847 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-04-09 02:42:48 +00:00
Joshua Colp
219f4b4913 Merged revisions 57317 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r57317 | file | 2007-03-01 17:19:32 -0500 (Thu, 01 Mar 2007) | 2 lines

Don't even attempt to optimize things when a proxy channel is involved. It will just explode in weird and unexplaineable ways. (issue #9175 reported by clegall_proformatique)

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@57318 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-03-01 22:21:44 +00:00
Russell Bryant
33235b40d6 Merge the changes from the /team/group/vldtmf_fixup branch.
The main bug being addressed here is a problem introduced when two SIP
channels using SIP INFO dtmf have their media directly bridged.  So, when a
DTMF END frame comes into Asterisk from an incoming INFO message, Asterisk
would try to emulate a digit of some length by first sending a DTMF BEGIN
frame and sending a DTMF END later timed off of incoming audio.  However,
since there was no audio coming in, the DTMF_END was never generated.  This
caused DTMF based features to no longer work.

To fix this, the core now knows when a channel doesn't care about DTMF BEGIN
frames (such as a SIP channel sending INFO dtmf).  If this is the case, then
Asterisk will not emulate a digit of some length, and will instead just pass
through the single DTMF END event.

Channel drivers also now get passed the length of the digit to their digit_end
callback.  This improves SIP INFO support even further by enabling us to put
the real digit duration in the INFO message instead of a hard coded 250ms.
Also, for an incoming INFO message, the duration is read from the frame and
passed into the core instead of just getting ignored.

(issue #8597, maybe others...)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@51311 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-01-19 17:49:38 +00:00
Joshua Colp
88002f78fd Merged revisions 47750 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r47750 | file | 2006-11-16 13:26:50 -0500 (Thu, 16 Nov 2006) | 2 lines

Because of the way chan_local is written we should be extra careful and make sure our callback functions have a tech_pvt. (issue #8275 reported by mflorell)

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@47751 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-11-16 18:29:12 +00:00
Joshua Colp
e83e3123f7 Merged revisions 47711 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r47711 | file | 2006-11-15 17:29:30 -0500 (Wed, 15 Nov 2006) | 2 lines

Make sure that the pvt structure exists before trying to do fixup on Local channels. (issue #7937 reported by mada123, fix by alamantia with mods by me)

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@47712 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-11-15 22:31:17 +00:00
Steve Murphy
517978fd5f These mods are to solve the problem in bug 7506. It's a lot of rework to solve a fairly small problem... such is life.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@47303 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-11-07 23:46:41 +00:00
Joshua Colp
b3bf131dd8 This is not the commit you are looking for...
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@47287 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-11-07 20:14:58 +00:00
Joshua Colp
b832f42414 Make MOH work as it did before in chan_local, without this then it can go funky when transfers and MOH are involved. (issue #7671 reported by jmls)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@47284 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-11-07 20:08:52 +00:00
Tilghman Lesher
e05a2752e8 Reverse change of "show" to "list" and make several other commands more consistent with "category verb arguments"
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@47051 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-11-02 23:00:20 +00:00
Joshua Colp
6dc8b23feb Strip options off the argument passed for devicestate in chan_local. (issue #8034 reported by pcardozo)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@43697 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-09-26 20:19:33 +00:00
Kevin P. Fleming
fcb999c01c merge qwell's CLI verbification work
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@43212 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-09-18 19:54:18 +00:00
Joshua Colp
082f59ff03 Use flags instead of variables on the private structure for things
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@42338 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-09-07 21:11:07 +00:00
Joshua Colp
0b93665a71 Code cleaning/updates/potential bug fixes
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@42311 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-09-07 19:50:59 +00:00
Joshua Colp
c6977b9983 Merge in VLDTMF support with Zaptel/Core done by the ever great Darumkilla Russell Bryant and the RTP portion done by myself, Muffinlicious Joshua Colp. This has gone through so many discussions/revisions it's not funny but we finally have it!
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@41507 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-08-31 01:59:02 +00:00
Russell Bryant
f7e7161607 Merge team/russell/frame_caching
There are some situations in Asterisk where ast_frame and/or iax_frame
structures are rapidly allocatted and freed (at least 50 times per second
for one call).

This code significantly improves the performance of ast_frame_header_new(), 
ast_frdup(), ast_frfree(), iax_frame_new(), and iax_frame_free() by keeping
a thread-local cache of these structures and using frames from the cache 
whenever possible instead of calling malloc/free every time.

This commit also converts the ast_frame and iax_frame structures to use the
linked list macros.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@41278 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-08-29 20:50:36 +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
BJ Weschke
35a2f14d96 Quit early and print a LOG_WARNING if we are trying to check devicestate on a Local channel that's been improperly defined.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@34463 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-06-16 12:55:18 +00:00
Kevin P. Fleming
794d0e4d1f make Local channel return sensible device state values
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@34162 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-06-14 22:39:19 +00:00
Kevin P. Fleming
79f5f61474 Merged revisions 33638 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r33638 | kpfleming | 2006-06-12 11:03:29 -0500 (Mon, 12 Jun 2006) | 2 lines

only allow chan_local to masquerade the outbound channel onto its owner, instead of the other way around (this will ensure that group variables on the outbound channel as preserved)

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@33643 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-06-12 16:07:32 +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
a0f95cd526 Merged revisions 29464 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r29464 | file | 2006-05-22 13:33:03 -0300 (Mon, 22 May 2006) | 2 lines

Preserve presentation bit when going through chan_local (issue #7002 reported by acunningham)

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@29466 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-22 16:36:13 +00:00
Olle Johansson
1783cb3a91 Adding send_text capability to chan_local
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@28520 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-19 08:20:01 +00:00
Olle Johansson
908c153840 First stab at supporting video in chan_local
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@28502 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-19 08:03:28 +00:00
Olle Johansson
a3cc752008 Add simple devicestate for chan_local
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@28484 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-19 07:56:56 +00:00
Kevin P. Fleming
fdcfd6469b ensure that control frames with payload can be sent to channel drivers via ->indicate()
update iax2_indicate to pass control frame payload to the connected channel
add an API call for sending an indication with payload, and use it for control frames with payload


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@26417 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-05-10 12:24:11 +00:00
Luigi Rizzo
5928df2a48 replace strncpy with ast_copy_string.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@22016 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-21 17:53:39 +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
Tilghman Lesher
756c7cbb12 Bug 6873 - Finish moving from the non-threadsafe (and poor randomness) rand() to threadsafe ast_random()
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@17627 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-04-05 17:44:44 +00:00
Luigi Rizzo
0b655c3ce9 minor cleanup: localize a variable and replace i++; i++ with i +=2;
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@16652 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-03-31 10:13:22 +00:00
Tilghman Lesher
4f1e5d1aef Bug 6387 - janitor cleanup for linked lists
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@9349 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-10 00:20:43 +00:00
BJ Weschke
81125d803e Don't set a global variable if the channel you're trying to set CHANLOCALSTATUS on has gone away already.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@9139 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-03 22:38:38 +00:00
Kevin P. Fleming
a16ae226b6 use string fields for some stuff in ast_channel
const-ify some more APIs
remove 'type' field from ast_channel, in favor of the one in the channel's tech structure
allow string field module users to specify the 'chunk size' for pool allocations
update chan_alsa to be compatible with recent const-ification patches


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@9060 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-02-01 23:05:28 +00:00
Russell Bryant
a228af1dd9 remove some more local declarations of null frames
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@9004 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-31 17:57:12 +00:00
Olle Johansson
ad5eaa9aca More doxygen updates
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@8315 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-20 00:18:42 +00:00
BJ Weschke
242a478023 Fix compiler warning.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@8135 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-17 18:31:03 +00:00
BJ Weschke
1874f21ff8 Implement the autologoffunavail option in chan_agent (#6038 with some minor mods)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@8063 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-13 18:23:30 +00:00
Russell Bryant
466a062b09 convert some channels to use the memory allocation wrappers.
(This is being added to the janitor projects list.)


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@7954 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-01-11 01:20:29 +00:00