Commit Graph

101 Commits

Author SHA1 Message Date
Russell Bryant
8b3f41409e Don't report a syntax error when an empty string is passed to ast_get_group.
Just return 0.

(closes issue #11540)
Reported by: tzafrir
Patches: 
      group_empty.diff uploaded by tzafrir (license 46)
	   -- slightly changed by me


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@95024 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-27 21:40:02 +00:00
Tilghman Lesher
540077b7b1 Race: we need to wait to queue a NewChannel event until after the channel is
inserted into the channel list.  The reason is because some manager users
immediately queue requests from the channel when they see that event and are
confused when Asterisk reports no such channel. (Closes issue #11632)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@94767 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-24 19:36:59 +00:00
Mark Michelson
62fa8dfbfa Rework deadlock avoidance used in ast_write, since it meant that agent channels which were being monitored
had one audio file recorded and one empty audio file saved.

(closes issue #11529, reported by atis patched by me)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@93625 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-18 17:02:48 +00:00
Jason Parker
5376122015 If we fail to create a channel after allocating a timing fd, we need to make sure to close it.
Issue 11454, patch by eliel.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@90876 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-04 17:28:08 +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
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
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
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
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
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
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
Kevin P. Fleming
214a5ca25e appending one list to another should leave the first list empty, and not require the user to do that
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@87069 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-25 23:03:11 +00:00
Russell Bryant
20ce142d01 Don't leak a frame in the case that an END frame is received and the time since
the BEGIN is less than that of the defined minimum DTMF duration.

(closes issue #11051)
Reported by: casper
Patches:
      channel.c.86664.diff uploaded by casper (license 55)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@86750 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-22 15:52:48 +00:00
Joshua Colp
0e9071a2e3 Move log message to before the frame it references is freed.
(closes issue #11050)
Reported by: slavon
Patches:
      channel.c.86662.diff uploaded by casper (license 55)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@86663 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-22 14:27:03 +00:00
Russell Bryant
9df6ebe9b9 The channel needs to stay locked while running timer callbacks, as they access
and modify channel data that may change elsewhere.  I went through every timer
callback in the source tree to make sure that none of them did any additional
locking that could introduce deadlocks, and all is well.

(closes issue #10765)
Reported by: Ivan
Patches:
      ast_1_4_11_svn_patch_channel_rc.diff uploaded by Ivan (license 229)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@86330 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-18 18:03:10 +00:00
Tilghman Lesher
96d11d3e02 This commit fixes the following issues:
- Deadlock in ast_write (issue #10406)
- Deadlock in ast_read (issue #10406)
- Possible mutex initialization error in lock.h (issue #10571)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@85158 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-09 21:55:06 +00:00
Joshua Colp
2baeb29ae4 Don't keep trying to native bridge if either of the channels are involved in a masquerade operation to be done.
(closes issue #10696)
Reported by: tbelder


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@84990 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-08 15:03:07 +00:00
Dwayne M. Hubbard
bae4135759 moved get_base_channel() code from action_redirect to ast_channel_masquerade() for issue 7706 and BE-160
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@84274 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-01 21:25:37 +00:00
Tilghman Lesher
253a34b756 Avoid a deadlock with ALL of the locks in the masquerade function, not just the
pairs of channels.  (Closes issue #10406)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@84049 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-28 05:30:22 +00:00
Russell Bryant
d6b8fb4dc0 gcc 4.2 has a new set of warnings dealing with cosnt pointers. This set of
changes gets all of Asterisk (minus chan_alsa for now) to compile with gcc 4.2.
(closes issue #10774, patch from qwell)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@83432 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-21 14:37:20 +00:00
Joshua Colp
0f82a9bbf1 (closes issue #10650)
Reported by: tacvbo
Only print out that the spy was removed while holding the spy lock.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@81492 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-05 13:11:48 +00:00
Joshua Colp
63669c4496 (closes issue #10476)
Reported by: mdu113
Only look for the end of a digit when waiting for a digit. This in turn disables emulation in the core.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@81437 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-04 13:46:23 +00:00
Steve Murphy
241769b53c From a user complaint on #asterisk, I have forced pbx_spool to explain what reason codes mean, when they are logged
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@79099 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-10 20:53:43 +00:00
Joshua Colp
d76d2c5214 Add additional DTMF log messages to help when debugging issues.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@78275 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-06 21:41:13 +00:00
Russell Bryant
0a2331cf26 file and I both committed changes for issue #10301. Remove a duplicated
assignment to restore the original value of the previous channel.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@77785 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-30 18:55:15 +00:00
Russell Bryant
e533cabf1c (closes issue #10301)
Reported by: fnordian
Patches:
      asterisk-1.4.9-channel.c.patch uploaded by fnordian (license 110)
      Additional changes by me

Fix some problems in channel_find_locked() which can cause an infinite loop.
The reference to the previous channel is set to NULL in some cases.  These changes
ensure that the reference to the previous channel gets restored before needing
it again.

I'm not convinced that the code that is setting it to NULL is really the right
thing to do.  However, I am making these changes to fix the obvious problem
and just leaving an XXX comment that it needs a better explanation that what
is there now.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@77780 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-30 17:29:43 +00:00
Joshua Colp
33abae518a (closes issue #10301)
Reported by: fnordian
Patches:
      asterisk-1.4.9-channel.c.patch uploaded by fnordian (license 110)
Restore previous behavior where if we failed to lock the channel we wanted we would return to exactly the same point as if we had just reentered the function.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@77771 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-30 15:47:52 +00:00
Joshua Colp
8fa7c1e9b0 (closes issue #10302)
Reported by: litnialex
If a DTMF end frame comes from a channel without a begin and it is going to a technology that only accepts end frames (aka INFO) then use the minimum DTMF duration if one is not in the frame already.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@77460 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-26 23:19:04 +00:00
Mark Michelson
ccb0f924af chan->emulate_dtmf_duration is an unsigned int, not a signed int, so use %u instead of %d in the format string
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@77154 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-25 21:52:47 +00:00
Russell Bryant
7f9bf7e970 Use the define that specifies the default length of an artificially created
DTMF digit in the ast_senddigit() function.  The define is set to 100ms by
default, which is the same thing that this function was using.  But, using
the define lets changes take effect in this case, as well as the others where
it was already used.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@76132 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-20 18:22:24 +00:00
Joshua Colp
7152afccd5 Whoops... didn't want this to be returned to 0 each iteration.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@74922 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-12 19:17:59 +00:00
Joshua Colp
26acd893d3 When waiting for a digit ensure that a begin frame was received with it, not just an end frame. (issue #10084 reported by rushowr)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@74888 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-12 17:16:28 +00:00
Joshua Colp
0e80607e17 Merged revisions 73349 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r73349 | file | 2007-07-05 11:19:14 -0300 (Thu, 05 Jul 2007) | 2 lines

Tweak spy locking. (issue #9951 reported by welles)

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@73355 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-05 14:21:44 +00:00
Joshua Colp
a3716070d1 Added additional DTMF debug messages for when emulation occurs.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@72888 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-02 14:32:59 +00:00
Joshua Colp
a61fb24363 Merged revisions 72256 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r72256 | file | 2007-06-27 16:23:24 -0400 (Wed, 27 Jun 2007) | 2 lines

I may possibly get shot for doing this... but... defer CDR processing until after the channel has been dealt with. This should eliminate all of the issues with channels going funky (SIP/PRI) when you are posting CDRs to a database that is either slow or unavailable and do not want to enable batching.

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@72257 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-06-27 20:25:24 +00:00
Joshua Colp
60990f0c73 Make the ast_read_noaudio API call behave better under circumstances where DTMF emulation was happening and a generator was setup. (issue #10065 reported by stevefeinstein)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@72148 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-06-27 17:31:50 +00:00
Steve Murphy
c05bb13de9 Merged revisions 70053 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r70053 | murf | 2007-06-19 12:07:59 -0600 (Tue, 19 Jun 2007) | 1 line

This fixes 9246, where channel variables are not available in the 'h' exten, on a 'ZOMBIE' channel. The fix is to consolidate the channel variables during a masquerade, and then copy the merged variables back onto the clone, so the zombie has the same vars that the 'original' has.
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@70062 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-06-19 18:23:23 +00:00
Joshua Colp
b6bd3b483e Merged revisions 69986 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r69986 | file | 2007-06-19 12:21:29 -0400 (Tue, 19 Jun 2007) | 2 lines

Update BRIDGEPEER variable if set to the new channel name when a masquerade happens. (issue #9699 reported by dimas)

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@69987 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-06-19 16:24:31 +00:00
Russell Bryant
3fb6ac7fb7 In ast_channel_make_compatible(), just return if the channels' read and write
formats already match up.  There are code paths that call this function on a
pair of channels multiple times.  This made calls fail that were using g729
in some cases.  The reason is that codec_g729a will unregister itself from the
list of available translators will all licenses are in use.  So, the first
time the function got called, the right translation path was allocated.
However, the second time it got called, the code would not find a translation
path to/from g729 and make the call fail, even if the channel actually already
had a g729 translation path allocated.

(SPD-32)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@69010 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-06-12 19:13:41 +00:00
Joshua Colp
080acbfd16 Merged revisions 68682 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r68682 | file | 2007-06-11 10:29:58 -0400 (Mon, 11 Jun 2007) | 2 lines

Improve deadlock handling of the channel list. (issue #8376 reported by one47)

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@68683 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-06-11 14:33:12 +00:00
Joshua Colp
ac65d7f143 Fix logic when doing a name based channel search for a structure when you want to start from a specific point in the channel list. (issue #9324 reported by slavon)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@68157 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-06-07 18:39:52 +00:00
Russell Bryant
e7dd69eea8 Merged revisions 67715 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r67715 | russell | 2007-06-06 11:40:51 -0500 (Wed, 06 Jun 2007) | 5 lines

We have some bug reports showing crashes due to a double free of a channel.
Add a sanity check to ast_channel_free() to make sure we don't go on trying
to free a channel that wasn't found in the channel list.
(issue #8850, and others...)

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@67716 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-06-06 16:55:59 +00:00
Russell Bryant
9dd7be2f58 Handle a failure in malloc() in ast_safe_string_alloc()
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@67372 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-06-05 17:07:30 +00:00
Russell Bryant
6d6cd29a87 Fix a problem that showed itself by causing Zap channel names to be completely
bogus on my machine.  ast_safe_string_alloc() was broken.  It called 
vsnprintf() on a va_args list twice without re-initializing it.  After the first
usage, va_end() and va_start() must be called again.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@67360 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-06-05 16:56:36 +00:00
Russell Bryant
a4c142d73d if the string field init fails, clean up the stuff that was allocated already
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@66076 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-05-24 22:23:59 +00:00
Russell Bryant
11d6381ec0 Check the result of ast_string_field_init() in ast_channel_alloc()
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@66070 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-05-24 22:07:39 +00:00
Joshua Colp
aff63fba76 Fix scenario where if a phone that simply called Echo() put itself on hold it could never get off hold.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@64240 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-05-14 17:23:51 +00:00
Olle Johansson
7583e21359 Add hangupcause when we lack codecs for transcoding
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@64157 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-05-14 10:39:12 +00:00