Commit Graph

986 Commits

Author SHA1 Message Date
Russell Bryant
97ac0d3d1c Simplify this code with a suggestion from Luigi on the asterisk-dev list.
Instead of using is16kHz(), implement a format_rate() function.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@98025 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-11 00:14:59 +00:00
Russell Bryant
8fd3d8a51b Fix various timing calculations that made assumptions that the audio being
processed was at a sample rate of 8 kHz.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@97976 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-10 23:30:40 +00:00
Tilghman Lesher
7f61492a42 1) When we get a translated frame out, clone it, because if the
translator pvt is freed before we use the frame, bad things happen.
2) Getting a failure from ast_sched_delete means that the schedule
ID is currently running.  Don't just ignore it.
(Closes issue #11698)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@97973 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-10 23:08:36 +00:00
Steve Murphy
9eeca94298 This is a fix for 2 things: a problem Terry was having in OSX with null pointers, which was my fault, as I probably forgot to run the sed script last time I made mods. So, I moved the fix into the flex input itself. Then, I found when I used flex 2.5.33, that it was using __STDC_VERSION__, and that's not real good; so I added back in a DIFFERENT sed script to fix that little mess. Tested everything, a couple different ways. Hope I did no harm, at the least.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@97849 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-10 20:21:27 +00:00
Jason Parker
3b966ed04e Correctly display a message if a command could not be found.
Also fix a comment which may have led to this happening.

Issue 11718, reported by kshumard.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@97622 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-09 20:28:43 +00:00
Jason Parker
5583996b22 Fix some locking and return value funkiness. We really shouldn't be unlocking this lock inside of a function, unless we locked it there too.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@97618 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-09 20:05:45 +00:00
Tilghman Lesher
1f14e0cf39 Allow filename completion on zero-length modules, remove a memory leak, remove
a file descriptor leak, and make filename completion thread-safe.
Patched and tested by tilghman.
(Closes issue #11681)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@97350 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-09 00:44:14 +00:00
Tilghman Lesher
3acbb032f8 Increase constants to where we're less likely to hit them while debugging.
(Closes issue #11694)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@97194 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-08 20:47:07 +00:00
Tilghman Lesher
1b289c2998 Apply multiple crash fixes, found in issue #11386, but not completely
closing that issue.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@97077 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-08 18:02:13 +00:00
Russell Bryant
b11422fe8f Don't pass an empty string as the device name.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@96644 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-05 02:09:19 +00:00
Tilghman Lesher
8770045be8 Fix the problem of notification of a device state change to a device with a '-'
in the name.  Could probably do with a better fix in trunk, but this bug has
been open way too long without a better solution.
Reported by: stevedavies
Patch by: tilghman
(Closes issue #9668)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@96575 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-04 23:03:40 +00:00
Mark Michelson
8fded490ce Avoiding a potentially bad locking situation. ast_merge_contexts_and_delete writelocks the conlock, then
calls ast_hint_extension, which attempts to readlock the same lock. Recursion with read-write locks is 
dangerous, so the inner lock needs to be removed. I did this by copying the "guts" of ast_hint_extension
into ast_merge_contexts_and_delete (sans the extra lock).

(this change is inspired by the locking problems seen in issue #11080, but I have no idea if this is the
problematic area experienced by the reporters of that issue)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@95577 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-31 23:43:13 +00:00
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
Mark Michelson
5dc1371bf2 Fixing a typo in a comment.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@94977 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-27 20:09:06 +00:00
Russell Bryant
c03ccc41f2 Now that the contexts lock is a read/write lock, it should not be locked here
in ast_hint_state_changed().  This makes it get locked recursively which now
causes a deadlock.
(closes issue #11080, thanks to callguy for the access to a deadlocked machine)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@94831 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-27 15:16:56 +00:00
Russell Bryant
67df6e008d Use the constant that I really meant to use here ...
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@94829 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-27 14:44:29 +00:00
Russell Bryant
c792659cc7 Change ast_translator_best_choice() to only pay attention to audio formats.
This fixes a problem where Asterisk claims that a translation path can not be
found for channels involving video.

(closes issue #11638)
Reported by: cwhuang
Tested by: cwhuang
Patch suggested by cwhuang, with some additional changes by me.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@94828 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-27 14:33:21 +00:00
Kevin P. Fleming
eb4d447b78 make this comment explain the situation in an even more explicit fashion
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@94824 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-27 01:01:47 +00:00
Tilghman Lesher
3c3eb75062 Workaround for what is probably a glibc bug (but we'll see this crop up again
and again, if we don't add the workaround).
Reported by: rolek
Patch by: tilghman
(Closes issue #11601, closes issue #11426)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@94808 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-26 20:43:38 +00:00
Russell Bryant
e6a8750fe7 Just in case the AST_FLAG_END_DTMF_ONLY flag was already set before starting
autoservice, remember it and ensure that the channel has the same setting when
autoservice gets stopped.  (pointed out by d1mas, patched up by me)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@94801 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-26 19:04:31 +00:00
Russell Bryant
52df524ba0 When a channel is in autoservice, mark a flag on the channel that says that
we only care about the END of a digit.  That way, no magic digit emulation stuff
will happen when all we're doing is queueing up END frames.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@94797 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-26 18:46:39 +00:00
Russell Bryant
1deba2c9ed Don't store DTMF BEGIN frames while a channel is in autoservice. It's just
going to make ast_read() do a lot of extra work when the channel comes back
out of autoservice.
(closes issue #11628, patched by me)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@94790 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-26 17:06:26 +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
8c7948fd44 Since we are freeing list elements within a list traversal, we need to use the safe
traversal and remove the item from the list before freeing it.

(closes issue 11612, reported by dtyoo)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@94468 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-21 16:49:35 +00:00
Russell Bryant
5977f8d5be Convert the contexts lock to a read/write lock to resolve a deadlock. This
has a nice side benefit of improving performance.  :)

(closes issue #11609)
(closes issue #11080)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@94466 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-21 16:37:47 +00:00
Mark Michelson
eac09a0cd0 Fixing Portuguese syntax for saying dates and times. Also some coding guidelines cleanup.
(closes issue #11599, reported and patched by caio1982, coding guidelines cleanup by me)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@94420 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-21 15:45:14 +00:00
Tilghman Lesher
2f24e1b1bf Fix for restart-as-user problem reported via the -dev list
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@94418 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-21 15:07:42 +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
6fa23de8ac Missed a spot..
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@93420 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-17 22:56:58 +00:00
Jason Parker
7e7db434e4 What was I thinking when I wrote this masterpiece?
-1 + 1 = 0..  who woulda thunk it?.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@93381 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-17 22:45:57 +00:00
Joshua Colp
0a584613d6 Do not try to access information about a lock when printing out a trylock attempt. It is possible for the lock that it references to no longer be valid. This would have caused segfaults or deadlocks.
(issue #BE-263)
(closes issue #11080)
Reported by: callguy
(closes issue #11100)
Reported by: callguy


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@93377 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-17 22:28:09 +00:00
Russell Bryant
4965b39719 There are a lot of existing systems that #include non-existent files. So, to
make the transition to treating this as an error a bit less painless, just issue
a huge error message for now.  Then, later, we can reinstate the code that treats
it as a failure.

(Thanks to philippel for the feedback)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@93000 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-14 17:36:08 +00:00
Jason Parker
65cbfa5d0d Make application help text a little more clear about the use of extensions in a filename.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@92809 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-13 20:13:48 +00:00
Jason Parker
8771f23fff If a typo is found in a config file, we previous continued on with what was already loaded.
We do not want to do this (see bug below for details).

This makes it so that if a [ is found without a ], the entire config will fail, and nothing in it will be loaded.

Isue #10690.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@92696 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-13 00:11:09 +00:00
Joshua Colp
7a1b94082c Fix potential memory leak with the dialed interfaces list if another memory allocation fails.
(closes issue #11507)
Reported by: eliel
Patches:
      global_datastores.c.patch uploaded by eliel (license 64)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@92363 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-11 19:51:40 +00:00
Joshua Colp
bff4a0aa3c Add G729A as another possible payload name for G729. Some devices use this instead of G729, which is perfectly normal since the payload number itself is defined and can't be used by anything else so the name doesn't matter that much.
(closes issue #11483)
Reported by: revolution
Patches:
      rtp.diff uploaded by revolution (license 346)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@92204 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-10 16:36:15 +00:00
Jason Parker
16a03298e9 We need to make sure we free the input frame if we return a different frame in ast_dsp_process.
Issue 11273, pointed out by dimas, with a patch by eliel.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@91890 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-07 23:29:01 +00:00
Russell Bryant
b5463cd8d3 Make the lock protecting each thread's list of locks it currently holds
recursive.  I think that this will fix the situation where some people have
said that "core show locks" locks up the CLI.
(related to issue #11080)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@91830 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-07 21:24:33 +00:00
Russell Bryant
ab117fecaa * Add a bit more of a verbose comment as to why a hangup frame needs to be
queued up if autoservice gets a NULL return from ast_read().
* Make the process of queueing the hangup frame more efficient by putting the
  frame where it is going to end up and avoiding some locking and extra memory
  allocations and freeing.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@91777 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-07 16:08:35 +00:00
Mark Michelson
9dbdc103b0 Hangups that happen during autoservice were not processed appropriately. This is
because a hangup actually causes a NULL frame to be received, not a hangup frame.
Queueing a hangup if we receive a NULL frame during autoservice corrects this problem

(closes issue #11467, reported  by jmls, patched by me)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@91737 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-07 15:39:58 +00:00
Tilghman Lesher
af01697791 At the end of a call, when we're reporting, RTCP may already be partially torn down, so check for NULL dereference
Reported by: blitzrage
Patch by: tilghman
(Closes issue #11450)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@91637 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-07 00:52:17 +00:00
Russell Bryant
0522e3d872 Add a new module flag to indicate that a build sum is present. Modules built
against older Asterisk 1.4 headers will now load properly with just a warning
indicating that they are old and may cause problems.
(patch by paravoid)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@91501 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-06 19:11:35 +00:00
Joshua Colp
6af6d06e75 Fix various in the udptl implementation. It could return empty modem frames, have an incorrect sequence number on packets, and display the wrong sequence number in the debug messages.
(closes issue #11228)
Reported by: Cache
Patches:
      udptl-4.patch uploaded by dimas (license 88)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@91450 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-06 16:49:42 +00:00
Olle Johansson
95dce3bbba Make sure logger is reloaded at general reload in the cli.
(Discovered during Asterisk training in Portugal)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@91366 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-06 12:54:11 +00:00
Russell Bryant
a4137c3fbe Make the lock in the threadstorage debugging code untracked to avoid a deadlock
on thread destruction.

(closes issue #11207)
Reported by: ys
Patches:
      threadstorage.c.diff uploaded by ys (license 281)

Also fixes an open bug report: (closes issue #11446)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@91192 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-05 17:31:42 +00:00
Russell Bryant
82257a7e33 When DEBUG_THREADS is enabled, we only have the details about who is holding
a lock that we are waiting on for a mutex, not rwlocks.  This should fix the
problem where people have reported "core show locks" crashing sometimes.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@91074 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-05 00:48:47 +00:00
Russell Bryant
644c7a89e7 Make some changes to some additions I made recently for doing channel autoservice
when looking up extensions.  This code was added to handle the case where a
dialplan switch was in use that could block for a long time.  However, the way
that I added it, it did this for all extension lookups.  However, lookups in the
in-memory tree of extensions should _not_ take long enough to matter.  So, move
the autoservice stuff to be only around executing a switch.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@90967 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-04 19:57:39 +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
bae731053f Do not create a smoother for G723.1 frames, they need to be left alone to their native 20/24 byte size.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@90588 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-03 20:05:42 +00:00