Commit Graph

518 Commits

Author SHA1 Message Date
Russell Bryant
1959929a2a Improve the debouncing logic in the DTMF detector to fix some reliability
issues.  Previously, this code used a shift register of hits and non-hits.
However, if the start of the digit isn't clean, it is possible for the
leading edge detector to miss the digit.  These changes replace the flawed
shift register logic and also does the debouncing on the trailing edge as well.
(closes issue #10535, many thanks to softins for the patch)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@80820 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-24 20:24:05 +00:00
Steve Murphy
d96548ab3c From a complaint by jmls, I realize that the message in cdr_disposition is unnecessary. To get failure disposition, just return -1; no use having more than one case do that.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@80789 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-24 18:52:15 +00:00
Tilghman Lesher
02d6a884bb Make the deprecation warning inline with the code, instead of only in documentation (closes issue #10549)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@80747 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-24 15:41:43 +00:00
Russell Bryant
b2c65cf51d This is a hack to maintain old behavior of chan_iax2. This ensures that if
the peers and users are being stored in a linked list, that they go in the
list in the same order that the older code used.  This is necessary to maintain
the behavior of which peers and users get matched when traversing the container.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@80497 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-23 16:53:52 +00:00
Russell Bryant
851b4e474c When converting this code to use the list macros, I changed it so objects are
added to the head of a bucket instead of the tail.  However, while looking over
code with mmichelson, we noticed that the algorithm used in ao2_iterator_next
requires that items are added to the tail.  This wouldn't have caused any huge
problem, but it wasn't correct.  It meant that if an object was added to a
container while you were iterating it, and it was added to the same bucket that
the current element is in, then the new object would be returned by 
ao2_iterator_next, and any other objects in the bucket would be bypassed in
the traversal.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@80424 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-22 22:40:27 +00:00
Russell Bryant
566371bd50 Merge changes from team/russell/iax_refcount.
This set of changes fixes problems with the handling of iax2_user and iax2_peer
objects.  It was very possible for a thread to still hold a reference to one of
these objects while a reload operation tries to delete them.  The fix here is to
ensure that all references to these objects are tracked so that they can't go away
while still in use.

To accomplish this, I used the astobj2 reference counted object model.  This
code has been in one of Luigi Rizzo's branches for a long time and was primarily
developed by one of his students, Marta Carbone.  I wanted to go ahead and bring
this in to 1.4 because there are other problems similar to the ones fixed by these
changes, so we might as well go ahead and use the new astobj if we're going to go
through all of the work necessary to fix the problems.

As a nice side benefit of these changes, peer and user handling got more efficient.
Using astobj2 lets us not hold the container lock for peers or users nearly as long
while iterating.  Also, by changing a define at the top of chan_iax2.c, the objects
will be distributed in a hash table, drastically increasing lookup speed in these
containers, which will have a very big impact on systems that have a large number of
users or peers.

The use of the hash table will be made the default in trunk.  It is not the default
in 1.4 because it changes the behavior slightly.  Previously, since peers and users
were stored in memory in the same order they were specified in the configuration file,
you could influence peer and user matching order based on the order they are specified
in the configuration.  The hash table does not guarantee any order in the container,
so this behavior will be going away.  It just means that you have to be a little
more careful ensuring that peers and users are matched explicitly and not forcing
chan_iax2 to have to guess which user is the right one based on secret, host, and
access list settings, instead of simply using the username.

If you have any questions, feel free to ask on the asterisk-dev list.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@80362 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-22 20:21:36 +00:00
Joshua Colp
d13b192018 (closes issue #10526)
Reported by: sinistermidget
Revert commit from issue #10355 and return timestamp skew to 640. 


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@80255 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-22 16:14:38 +00:00
Steve Murphy
4b5a9ae533 This patch solves problem 1 in 8126; it should not slow down the alaw codec, but should prevent signal degradation via multiple trips thru the codec. Fossil estimates the twice thru this codec will prevent fax from working. 4-6 times thru would result hearable, noticeable, voice degradation.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@80166 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-21 16:36:34 +00:00
Jason Parker
f1cb3f70b7 Don't send a semicolon over the wire in sip notify messages.
Caused by fix for issue 9938.

I basically took the code that existed before 9938 was fixed, and
 copied it into a new function - ast_unescape_semicolon

There should be very few places this will be needed (pbx_config
 does NOT need this (see issue 9938 for details))

Issue 10430, patch by me, with help/ideas from murf (thanks murf).


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@79904 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-17 19:12:19 +00:00
Joshua Colp
6dbbfcdc25 (closes issue #10440)
Reported by: irroot
(closes issue #10454)
Reported by: flo_turc
Increase maximum timestamp skew to 120. 20 was apparently far too low.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@79553 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-15 14:40: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
Steve Murphy
0c21db3e79 Re bug behavior mentioned in #asterisk, made this tweak to code, to prevent hundreds of log messages from being generated
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@79049 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-10 18:25:51 +00:00
Steve Murphy
2544c0be73 This will help debug; from a question asked on #asterisk
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@79044 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-10 17:43:49 +00:00
Joshua Colp
c3ba2c8fc6 Don't bother having the core pass through or emulate begin DTMF frames when in an ast_waitstream. It only cares about the end of DTMF.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@78955 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-10 14:15:53 +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
Jason Parker
e4f15628bb Fix an issue with using UpdateConfig (manager action) where escaped semicolons
in a config would be converted to just semicolons (\; to ;)

Issue 9938


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@78180 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-06 16:30:51 +00:00
Joshua Colp
88b982d7ff (closes issue #10355)
Reported by: wdecarne
Now that we pass through RTP timestamp information we need to make the allowed timestamp skew considerably less. There are situations where a source may change and due to the timestamp difference the receiver will experience an audio gap since we did not indicate by setting the marker bit that the source changed.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@78172 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-06 15:27:24 +00:00
Mark Michelson
05ba4d90d4 Changed the behavior of sip's realtime_peer function to match the corresponding way of matching for non-realtime peers.
Now matches are made on both the IP address and port number, or if the insecure setting is set to "port" then just match on the
IP address.

In order to accomplish this, I also added a new API call, ast_category_root, which returns the first variable of an ast_category struct



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@78103 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-03 20:25:22 +00:00
Russell Bryant
2f41cceb1f Add some improvements to lock debugging. These changes take effect
with DEBUG_THREADS enabled and provide the following:

 * This will keep track of which locks are held by which thread as well as
   which lock a thread is waiting for in a thread-local data structure.  A
   reference to this structure is available on the stack in the dummy_start()
   function, which is the common entry point for all threads.  This information
   can be easily retrieved using gdb if you switch to the dummy_start() stack
   frame of any thread and print the contents of the lock_info variable.

 * All of the thread-local structures for keeping track of this lock information
   are also stored in a list so that the information can be dumped to the CLI
   using the "core show locks" CLI command.  This introduces a little bit of a
   performance hit as it requires additional underlying locking operations
   inside of every lock/unlock on an ast_mutex.  However, the benefits of
   having this information available at the CLI is huge, especially considering
   this is only done in DEBUG_THREADS mode.  It means that in most cases where
   we debug deadlocks, we no longer have to request access to the machine to
   analyze the contents of ast_mutex_t structures.  We can now just ask them
   to get the output of "core show locks", which gives us all of the information
   we needed in most cases.

I also had to make some additional changes to astmm.c to make this work when
both MALLOC_DEBUG and DEBUG_THREADS are enabled.  I disabled tracking of one
of the locks in astmm.c because it gets used inside the replacement memory
allocation routines, and the lock tracking code allocates memory.  This caused
infinite recursion.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@78095 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-03 19:39:49 +00:00
Steve Murphy
a181678820 Merged revisions 77942 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r77942 | murf | 2007-08-02 11:56:37 -0600 (Thu, 02 Aug 2007) | 1 line

This patch hopefully solves 10141; The user is running with it, and it doesn't appear to harm asterisk's operation, and may prevent a crash. I'll store it in 1.2, as we have shut down support on 1.2, but since I developed the patch before support finished, and it might affect 1.4 and trunk, I'm going ahead with it.
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@77945 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-02 18:21:40 +00:00
Joshua Colp
97885fed58 (closes issue #10351)
Reported by: ftarz
Some platforms don't like it when you pass NULL to vsnprintf so pass "" instead.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@77871 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-01 18:08:51 +00:00
Joshua Colp
68c221f69a Add some fixes for building on Solaris.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@77869 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-01 17:56:59 +00:00
Joshua Colp
8e5dfb3cf9 Whoops, I meant R_5 not R5.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@77867 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-01 17:52:11 +00:00
Joshua Colp
bc7150c380 Extend autoconf logic to determine which version of gethostbyname_r is on the system.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@77863 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-01 17:22:35 +00:00
Jim Dixon
cd1614fcd8 Made VAST improvements in DTMF receiver in RADIO_RELAX mode (thanx Steve
W9SH), and oversight in logic in TONE_VERIFY/RELAX mode in chan_zap.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@77845 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-31 21:00:08 +00:00
Jason Parker
25017ad181 Applications like SayAlpha() should not hang up the channel if you
request an "unknown" character such as a comma.
Instead, skip the character and move on.

Issue 10083, initial patch by jsmith, modified by me.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@77795 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-30 20:17:08 +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
dbfdbbf4cc Fixes to get ast_backtrace working properly. The AST_DEVMODE macro was never defined so the majority of ast_backtrace never
attempted compilation. The makefile now defines AST_DEVMODE if configure was run with --enable-dev-mode. Also, changes were 
made to acccomodate 64 bit systems in ast_backtrace.

Thanks to qwell, kpfleming, and Corydon76 for their roles in allowing me to get this committed



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@77380 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-26 20:35:17 +00:00
Tilghman Lesher
bf9ffe0d09 Missed one
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@77350 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-26 19:32:17 +00:00
Tilghman Lesher
e9a1a42967 Oops, that builtin define should be all-lowercase.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@77348 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-26 19:27:18 +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
Luigi Rizzo
19ec0f8fe1 set the sequence number in a frame for all frame types
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@77022 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-25 09:34:01 +00:00
Tilghman Lesher
c7336cd3ff Found another place where we should be using the umask (thanks jcmoore)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@76891 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-24 20:42:05 +00:00
Jason Parker
24f0e6a947 Eliminate a compiler warning with gcc 4.2 by constifying a char *
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@76176 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-20 20:54:10 +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
Russell Bryant
c83a0b2a3c cast arguments to ast_log so that it builds without warnings for me
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@75447 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-17 20:51:25 +00:00
Joshua Colp
396e723f17 Ensure that the pointer to STUN data does not go to unaccessible memory. (ASA-2007-017)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@75439 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-17 20:40:57 +00:00
Russell Bryant
0a1a04137e (closes issue #10209)
Reported by: juggie
Patches:
      10209-trunk-2.patch uploaded by juggie
Tested by: juggie, blitzrage

In ast_pbx_run(), mark a channel as hung up after an application returned -1, 
or when it runs out of extensions to execute.  This is so that code can detect
that this channel has been hung up for things like making sure DeadAGI is used
on actual dead channels, and is beneficial for other things, like making sure
someone doesn't try to start spying on a channel that is about to go away.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@75403 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-17 20:01:12 +00:00
Kevin P. Fleming
d0cb9b141d Merged revisions 75304 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r75304 | kpfleming | 2007-07-16 15:46:58 -0500 (Mon, 16 Jul 2007) | 3 lines

provide proper copyright/license attribution for this structure that was copied from a BSD-licensed header file long, long ago...


........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@75306 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-16 20:53: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
Jason Parker
7e0ab0fa62 Don't use #if to check if something is defined - use #ifdef instead.
Pointed out by kpfleming


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@74388 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-10 19:10:36 +00:00
Jason Parker
d4a7eb584f Merged revisions 74373 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r74373 | qwell | 2007-07-10 13:37:23 -0500 (Tue, 10 Jul 2007) | 5 lines

Use res_ndestroy on systems that have it.  Otherwise, use res_nclose.
This prevents a memleak on NetBSD - and possibly others.

Issue 10133, patch by me, reported and tested by scw

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@74374 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-10 18:39:30 +00:00
Joshua Colp
49584ec434 Merged revisions 74264 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r74264 | file | 2007-07-10 11:48:00 -0300 (Tue, 10 Jul 2007) | 2 lines

Ensure the group information category exists before trying to do a string comparison with it. (issue #10171 reported by mlegas)

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@74265 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-10 14:50:00 +00:00
Tilghman Lesher
befa215f7b Doxygen formatting fixes; fixes errors while 'make progdocs'. (Closes issue #10104)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@73985 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-09 04:03:20 +00:00
Joshua Colp
a979d44c9c Give Agent channel names priority when doing CDR merging. (issue #10011 reported by krtorio)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@73980 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-09 03:13:19 +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