Commit Graph

986 Commits

Author SHA1 Message Date
Joshua Colp
b18d1bdd1a Preserve the indication currently playing on a channel when a masquerade operation happens. (issue #BE-88)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@90548 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-03 18:40:56 +00:00
Tilghman Lesher
763b1ccecc Clarify the return value on autoservice. Specifically, if you started
autoservice and autoservice was already on, it would erroneously return an
error.
Reported by: adiemus
Patch by: dimas
(Closes issue #11433)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@90432 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-02 09:34:23 +00:00
Russell Bryant
1f8caa100d Change the behavior of ao2_link(). Previously, in inherited a reference.
Now, it automatically increases the reference count to reflect the reference
that is now held by the container.

This was done to be more consistent with ao2_unlink(), which automatically
releases the reference held by the container.  It also makes it so it is
no longer possible for a pointer to be invalid after ao2_link() returns.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@90348 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-30 19:26:04 +00:00
Tilghman Lesher
2c11f7d18e Use of "private" as a field name in a header file messes with C++ projects
Reported by: chewbacca
Patch by: casper
(Closes issue #11401)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@90155 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-29 17:29:59 +00:00
Russell Bryant
2fc83c3db1 This set of changes is to make some callerID handling thread-safe.
The ast_set_callerid() function needed to lock the channel.  Also, the handlers
for the CALLERID() dialplan function needed to lock the channel when reading
or writing callerid values directly on the channel structure.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@90145 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-29 00:20:34 +00:00
Russell Bryant
1380790b60 Merge a change from team/russell/chan_refcount ...
This makes ast_stopstream() thread-safe.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@90142 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-29 00:06:08 +00:00
Kevin P. Fleming
fc5429da7c it is impossible to set permissions for manager accounts created by users.conf (reported internally, patched by me)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@90098 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-28 22:30:46 +00:00
Mark Michelson
815d77f1f6 Removing some seemingly pointless code. This sets a channel variable for every priority
executed in the dialplan if you have debug set to anything non-zero. This seems pointless
due to the fact that these channel variables are not referenced anywhere else in the code and
their names are esoteric enough that they would not be practical to reference in the dialplan. Plus
the fact that this behavior isn't documented anywhere means that the change is not likely to cause
any disruption. If anything, this may actually cause a slight performance increase if running with
debug on.

The motivating influence for this code change is the eventwhencalled option for queues. If set to
vars, all channel variables will be output to the manager. These unnecessary channel variables make
the output a lot more difficult to deal with.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@90059 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-28 22:08:50 +00:00
Russell Bryant
d0cd120d47 - update documentation for some of the goto functions to note that they
handle locking the channel as needed
 - update ast_explicit_goto() to lock the channel as needed


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89893 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-28 00:20:13 +00:00
Russell Bryant
1a6a5e1867 Don't do frame processing if ast_read() returned NULL.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89886 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-27 23:47:28 +00:00
Russell Bryant
3df74ed9ac Don't start/stop autoservice in pbx_extension_helper() unless a channel exists
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89839 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-27 23:16:00 +00:00
Russell Bryant
80c81b8e8c Merge changes from team/russell/autoservice_1.4
This set of changes fixes an issue that was reported to me on IRC yesterday.
The user, d1mas, was using chan_zap for incoming calls and was having DTMF
recognition issues in some situations.  Specifically, he noticed that the 
problem occurred when using DISA or WaitExten.  He also noticed that when 
using Read, the problem did not occur.  His system also used DUNDi for 
dialplan lookups.

So, he theorized that if the DUNDi lookups blocked for some period of time,
that audio from the zap channel could get lost.  If the audio got lost, then
it wouldn't be run through the DTMF detector, and digits could get lost.
He was correct, and the following set of changes fixes the problem.  However,
the changes go a little bit further than what was necessary to fix this exact
problem.

1) I updated pbx_extension_helper() to autoservice the associated channel to
   handle cases where extension lookups may take a long time.  This would
   normally be a dialplan switch that does some lookup over the network, such
   as the DUNDi or IAX2 switches.

   This ensures that even while a DUNDi lookup is blocking, the channel will be
   continuously serviced.

2) I made a change to the autoservice code.  This is actually something that
   has bothered me for a long time.  When a channel is in autoservice, _all_
   frames get thrown away.  However, some frames really shouldn't be thrown
   away.  The most notable examples are signalling (CONTROL) frames, and DTMF.

   So, this patch queues up important frames while a channel is in autoservice.
   When autoservice is stopped on the channel, the queued up frames get stuck
   back on the channel so that they can get processed instead of thrown away.

3) I made another change to the autoservice code to handle the case where
   autoservice is started on channels recursively.

   Previously, you could call ast_autoservice_start() multiple times on a
   channel, and it would stop the first time ast_autoservice_stop() gets
   called.  Now, it will ensure that autoservice doesn't actually stop until
   the final call to ast_autoservice_stop().


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89790 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-27 21:45:51 +00:00
Kevin P. Fleming
2fa2fea3f5 on second thought... revert all the other changes i've made in app options parsing leaving only one: if an empty argument is supplied for an option, set that argument pointer to point to an empty string rather than NULL, so that the application can do normal checks on it without worrying about it being NULL
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89709 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-27 20:16:56 +00:00
Kevin P. Fleming
e31c1b0441 generate a warning when an application option that requires an argument is ignored due to lack of an argument
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89701 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-27 19:36:55 +00:00
Olle Johansson
0c3ec937ce If we get a codec offer using a well-known payload type, but using it for another
codec that we don't know, Asterisk did not remove that codec from the list.

With this patch, we remove the codec from audio and video rtp objects and
deny it ever existed. Thanks to lasse for testing.

(closes issue #11376)
Reported by: lasse
Patches: 
      bug11376.txt uploaded by oej (license 306)
Tested by: lasse


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89630 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-27 15:23:17 +00:00
Steve Murphy
1975b6e753 closes issue #11379; OK, this is an attempt to make both sides happy. To the cdr.conf file, I added the option 'unanswered', which defaults to 'no'. In this mode, you will see a cdr for a call, whether it was answered or not. The disposition will be NO ANSWER or ANSWERED, as appropriate. The src is as you'd expect, the destination channel will be one of the channels from the Dial() call, usually the last in the list if more than one chan was specified. With unanswered set to 'yes', you will still see this cdr entry in both cases. But in the case where the dial timed out, you will also see a cdr for each line attempted, marked NO ANSWER, with no destination channel name. The new option defaults to 'no', so you don't see the pesky extra cdr's by default, and you will not see the irritating 'not posted' messages.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89622 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-27 06:24:02 +00:00
Joshua Colp
aeed294b7b Fix issues with async dialing with an application executing. The application has to be terminated and control returned to the thread before hanging things up. (issue #BE-252)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89610 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-26 21:10:29 +00:00
Russell Bryant
a17edf7d99 Add channel locking to a function that needed to be doing it. This is just a
little something I noticed while working on a completely unrelated issue.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89594 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-26 17:41:04 +00:00
Kevin P. Fleming
daea9fd8e8 when parsing application options that take arguments, don't indicate that the option was supplied unless a non-zero-length argument was found for it
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89586 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-26 17:20:36 +00:00
Joshua Colp
c93621d1ec If channel allocation fails because the alert pipe could not be created also free the scheduler context.
(closes issue #11355)
Reported by: eliel
Patches:
      main.channel.c.patch uploaded by eliel (license 64)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89577 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-26 15:34:38 +00:00
Tilghman Lesher
e671cb909d Currently, zero-length voicemail messages cause a hangup in VoicemailMain.
This change fixes the problem, with a multi-faceted approach.  First, we
do our best to avoid these messages from being created in the first place,
and second, if that fails, we detect when the voicemail message is
zero-length and avoid exiting at that point.
Reported by: dtyoo
Patch by: gkloepfer,tilghman
(Closes issue #11083)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89540 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-24 06:19:23 +00:00
Tilghman Lesher
540a2c7098 Up until this point, the XML output of the manager has been technically
invalid, due to the repetition of certain parameters in a single event.
This caused various issues for XML parsers, some of which refused to parse
at all, given the invalidity of the rendered XML.  So this commit fixes
the XML output, ensuring that each entity parameter has a unique name, thus
ensuring valid XML.
Reported by: msetim
Patch by: tilghman
(Closes issue #10220)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89536 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-23 17:18:26 +00:00
Kevin P. Fleming
337fb0c37f bring back compile-option checking when loading modules, only this time use a string-based storage and comparison mechanism because it is easier to support on other platforms
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89461 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-20 19:12:52 +00:00
Mark Michelson
da4933e657 According to comments in main/pbx.c, it is essential that if we are going to lock
the conlock as well as the hints lock, it must be locked in that respective order.
In order to prevent a potential deadlock, we need to lock the conlock prior to 
locking the hints lock in ast_hint_state_changed (see the call stack example on
issue #11323 for how this can happen).

(closes issue #11323, reported  by eelcob, suggestion for patch by eelcob, patch by me)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89457 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-20 17:50:31 +00:00
Russell Bryant
12d60508f3 Temporarily revert revision 89325, which added md5 magic for keeping track of
what build options were used.  We agreed that we should remove this before
making a 1.4 release, and then we can put it back in.  Then, we can take a
month or so to play around with it to get it how we want it.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89339 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-16 22:26:44 +00:00
Kevin P. Fleming
22b119d188 To help combat problems where people build external modules (asterisk-addons or others) and then change the build options of the Asterisk build in a way that makes the incompatible without warning, this commit introduces an MD5 signature of the important build-time options and includes that signature into modules when they are built. When the loader loads one of these modules and notices the problem, it will emit a warning to console and refuse to initialize the module, as doing so could cause the system to be unstable or even crash.
If you upgrade to this version of Asterisk, you must rebuild *all* of your modules that came from other sources before trying to run this version. If you are using Digium's G.729 binary codec module, you will need v33 or newer.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89325 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-16 16:47:46 +00:00
Mark Michelson
1fece3bb67 Undoing previous commit since I realize it was wrong
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89288 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-15 14:57:28 +00:00
Mark Michelson
88f847869d Adding a missing mutex unlock.
(closes issue 11256, reported and patched by ys)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89286 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-15 14:54:10 +00:00
Tilghman Lesher
1af09c5f9d When a recording ends with '#', we are improperly trimming an extra 200ms from the recording.
Reported by: sim
Patch by: tilghman
Closes issue #11247


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89275 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-14 23:23:58 +00:00
Joshua Colp
f3f12761ba Return the proper value when the srv_callback function executes properly.
(closes issue #11240)
Reported by: jtodd


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89260 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-14 01:15:12 +00:00
Tilghman Lesher
feed493993 Debugging is running into the 16-lock limit. Increase to avoid.
(This define is only effective when debugging is turned on, so there's
no effect for most installations.)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89239 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-13 13:51:53 +00:00
Jason Parker
05df1092da Fix a typo pointed out by De_Mon on #asterisk-dev
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89194 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-12 20:46:52 +00:00
Tilghman Lesher
472eb33648 If two config writes collide, file corruption could result. Use a mkstemp() file, instead.
Reported by: paravoid
Patch by: tilghman
Closes issue #10781


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89191 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-12 20:16:18 +00:00
Tilghman Lesher
1a052e0498 Fix two cases of memory corruption caused by background threads.
Reported by: atis
Patch by: tilghman
Fixes issue #10923


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89184 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-12 17:29:17 +00:00
Jason Parker
76aa7c3767 Properly say the seconds here..
Issue 11203, fix described by vma.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89125 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-08 23:52:35 +00:00
Kevin P. Fleming
30cb593fd2 fix a glaring bug in the new SRV record handling that would cause incorrect weight sorting
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89105 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-08 05:26:47 +00:00
Mark Michelson
63f6e6b023 Fixing a segfault in the manager "core show channels concise" command.
(closes issue #11183, reported by arnd and patched by ys)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89085 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-07 15:56:49 +00:00
Olle Johansson
044aa79799 Bug fixes to tdd support in zaptel.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89042 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-06 18:53:37 +00:00
Steve Murphy
712b337863 closes issue #8786 - where the [catname](!) and [catname](othercat1,othercat2,...) notation gets dropped across a ConfigUpdate (or any other thing that would cause a config file to be written). While I was at it, I also cleaned up some of the destroy routines to free up comments, which was not being done. Made sure the new struct I introduced is also cleaned up properly at destruction time. My code handles multiple template inclusions. Many thanks to ssokol for his patch, which, while not literally used in the final merge, served as a foundation for the fix.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89036 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-06 17:52:50 +00:00
Mark Michelson
7b59a194a5 Reworked deadlock avoidance in __ast_read. Restored audio to
callback agents.

(closes issue #11071, reported by callguy, patched by me, tested by callguy and Ted Brown)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@88826 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-05 23:29:29 +00:00
Russell Bryant
34002d567b After seeing crashes related to channel variables, I went looking around at the
ways that channel variables are handled.  In general, they were not handled in
a thread-safe way.  The channel _must_ be locked when reading or writing from/to
the channel variable list.

What I have done to improve this situation is to make pbx_builtin_setvar_helper()
and friends lock the channel when doing their thing.  Asterisk API calls almost 
all lock the channel for you as necessary, but this family of functions did not.

(closes issue #10923, reported by atis)
(closes issue #11159, reported by 850t)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@88805 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-05 22:07:54 +00:00
Russell Bryant
5d140cb9c2 Merge changes from asterisk/team/kpfleming/SRV-priority-handling
Previously, the SRV record support in Asterisk was broken.  There was no
guarantee on what record Asterisk would choose to actually use.  This set of
changes improves the situation by ensuring that Asterisk will choose the
highest priority record.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@88719 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-05 20:40:01 +00:00
Russell Bryant
9cb94c7cde Merge the last bit of changes from asterisk/team/russell/readq-1.4
The issue here is that the channel frame readq handling got broken when the
code was converted to use the linked list macros.  It caused corruption of the
list head and tail pointers.  So, I fixed up the usage of the linked list
macros and in passing, simplified the code.  I also documented what the code
is doing, as it was a bit difficult to figure out at first.

This bug showed itself with crashes showing messed up head/tail pointers for
the readq.  However, there are a couple of crashes that aren't quite as obvious,
but I think may be related.  So, if your bug gets closed by this commit, but
you still have a problem, please reopen or create a new bug report.

(closes issue #10936)
(closes issue #10595)
(closes issue #10368)
(closes issue #11084)
(closes issue #10040)
(closes issue #10840)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@88709 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-05 20:11:04 +00:00
Russell Bryant
a3af50b67d Fix up datastore handling in ast_do_masquerade(). The code is intended to move
any channel datastores from the old channel to the new one.  However, it did
not use the linked list macros properly to accomplish the task.  The existing
code would only work if there was only a single datastore on the old channel.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@88624 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-05 17:46:02 +00:00
Luigi Rizzo
a0edff2477 Rename ast_string_field_free_pool to ast_string_field_free_memory,
and ast_string_field_free_all to ast_string_field_reset_all
to avoid misuse (due to too similar names and an error in
documentation). Fix two related memory leaks in app_meetme.

No need to merge to trunk, different fix already applied there.
Not applicable to 1.2



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@88471 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-04 22:38:13 +00:00
Jason Parker
fc0439dde4 We need to make sure to specify a language to ast_fileexists, otherwise it may fail for anything besides en
Issue 11147, fix discovered by both citats and myself (independently), with input from Corydon76


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@88283 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-02 16:51:08 +00:00
Jason Parker
4df0c83be7 Fix build of editline on Solaris.
Issue 11113, patch by snuffy.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@87567 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-30 15:45:35 +00:00
Kevin P. Fleming
f0c0dfe1f1 clean up (and ignore) assembler and preprocessor intermediate files if any are created during the build
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@87463 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-29 22:12:16 +00:00
Russell Bryant
b2382349dc Add some more details to the output of "core show locks". When a thread
is waiting for a lock, this will now show the details about who currently
has it locked.
(inspired by issue #11100)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@87396 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-29 20:22:07 +00:00
Russell Bryant
fd7bc75ce9 Remove a lock that doesn't make any sense. The regions lock needs to be held
when traversing the list of allocated chunks so that they can be printed out
to the CLI.
(Thanks to eliel on #asterisk-dev for pointing this out!)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@87373 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-29 19:21:06 +00:00