Commit Graph

970 Commits

Author SHA1 Message Date
Joshua Colp a3b8cb670e This concludes bringing trunk back to a working state.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@81345 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-29 16:07:35 +00:00
Joshua Colp c9445d4a68 To keep others happy... revert part of my additions so trunk works.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@81344 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-29 16:03:51 +00:00
Russell Bryant d99440e2ed Merged revisions 81342 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r81342 | russell | 2007-08-29 10:57:29 -0500 (Wed, 29 Aug 2007) | 3 lines

If chan_h323 is not being built, don't use g++ to do the final link of Asterisk.
(in response to a question on the asterisk-dev list)

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@81343 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-29 15:59:10 +00:00
Joshua Colp 2351d789fd Add API calls for iterating through an event. This should allow events to have multiple information elements (while there was nothing preventing it before you could not actually access any except the first one).
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@81334 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-29 15:19:11 +00:00
Joshua Colp f4fa5a228a Add some read/write locking magic to make logger reload operate again.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@81290 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-28 21:35:20 +00:00
Tilghman Lesher f5a14167f3 Support better rotation of log files to be more like system logging (closes issue #10398)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@81277 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-28 20:03:48 +00:00
Russell Bryant 040a5f20f9 * Constify the uid field of channel datastores
* Convert some spaces to tabs in func_volume
* Add a note in channel.h making it clear that none of the datastore API calls
  lock the channel they are given, so the channel should be locked before
  calling the functions that take a channel argument.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@81260 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-28 18:32:56 +00:00
Russell Bryant 43e9b0f67c (closes issue #7852)
Reported by: nic_bellamy
Patches:
      2006-10-03_svn_44249_voicemail_lockmode_v3.patch uploaded by nic_bellamy (license 213)

Add support for configurable file locking methods.  The default is "lockfile",
which is the old behavior.  There is an additional option, "flock", which is
intended for use in situations where the lockfile method will not work, such as
with SMB/CIFS mounts.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@81233 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-28 16:28:26 +00:00
Joshua Colp 44aacc96f1 Merged revisions 80974 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r80974 | file | 2007-08-27 10:20:31 -0300 (Mon, 27 Aug 2007) | 4 lines

(closes issue #10562)
Reported by: idkpmiller
Correct jitter value output in the CLI to be as expected.

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@80975 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-27 13:23:36 +00:00
Russell Bryant 7ddccc897f Merged revisions 80820 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r80820 | russell | 2007-08-24 15:24:05 -0500 (Fri, 24 Aug 2007) | 7 lines

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/trunk@80821 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-24 20:25:39 +00:00
Tilghman Lesher f8c93488d5 Fix documentation for Set (closes issue #10549)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@80817 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-24 19:50:16 +00:00
Steve Murphy 9931947a6e Merged revisions 80789 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r80789 | murf | 2007-08-24 12:52:15 -0600 (Fri, 24 Aug 2007) | 1 line

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/trunk@80790 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-24 19:03:39 +00:00
Joshua Colp c755851bc8 Return trunk to a working state by including compat.h in minimime.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@80453 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-23 13:37:20 +00:00
Jason Parker b875ca68e1 Convert minimime to use the proper uint*_t types, rather than u_int*_t
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@80429 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-22 23:26:02 +00:00
Russell Bryant 4328c75281 Merged revisions 80424 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r80424 | russell | 2007-08-22 17:40:27 -0500 (Wed, 22 Aug 2007) | 10 lines

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/trunk@80425 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-22 22:43:12 +00:00
Russell Bryant 50d7fc81aa Merged revisions 80362 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r80362 | russell | 2007-08-22 15:21:36 -0500 (Wed, 22 Aug 2007) | 34 lines

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/trunk@80387 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-22 20:44:23 +00:00
Joshua Colp 91d9c110af Merged revisions 80255 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r80255 | file | 2007-08-22 13:14:38 -0300 (Wed, 22 Aug 2007) | 4 lines

(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/trunk@80256 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-22 16:16:01 +00:00
Steve Murphy 6f9f77e0ca Merged revisions 80166 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r80166 | murf | 2007-08-21 10:36:34 -0600 (Tue, 21 Aug 2007) | 1 line

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/trunk@80241 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-22 14:12:24 +00:00
Joshua Colp 937d83f7e4 Minor tweak. Don't manipulate volume of the audio in the buffer if no audio is actually there.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@80157 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-21 15:51:49 +00:00
Steve Murphy 337c44236d This change set fixes bug 8126 in trunk. It is implemented via compile time options, activated via the menuselect stuff, which defaults to the old way. non-zero sample data added. Translate tables expressed in microseconds instead of milliseconds, with 5-digit data now instead of 3, giving 2 more digits of precision.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@80113 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-20 22:53:48 +00:00
Jason Parker 100e2387db Merged revisions 79904 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

(closes issue #10430)
........
r79904 | qwell | 2007-08-17 14:12:19 -0500 (Fri, 17 Aug 2007) | 11 lines

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/trunk@79905 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-17 19:13:25 +00:00
Tilghman Lesher 8b63009338 Change this flag... might not otherwise unlock in an OOM situation
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@79885 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-17 14:41:33 +00:00
Russell Bryant f5bf66bcd7 This commit adds a scheduler API call, ast_sched_replace that can be used
in place of a very common construct.  I also used it in a number of places
in chan_sip.

  if (id > -1)
     ast_sched_del(sched, id);
  id = ast_sched_add(sched, ...);

changes to:

  ast_sched_replace(id, sched, ...);


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@79861 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-17 14:07:44 +00:00
Tilghman Lesher 56b9568164 Don't reload a configuration file if nothing has changed.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@79747 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-16 21:09:46 +00:00
Steve Murphy 9836efb5fb This commit closes bug 7605, and half-closes 7638. The AEL code has been redistributed/repartitioned to allow code re-use both inside and outside of Asterisk. This commit introduces the utils/conf2ael program, and an external config-file reader, for both normal config files, and for extensions.conf (context, exten, prio); It provides an API for programs outside of asterisk to use to play with the dialplan and config files.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@79595 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-15 19:21:27 +00:00
Joshua Colp 5fbd7ebd24 Merged revisions 79553 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r79553 | file | 2007-08-15 11:40:23 -0300 (Wed, 15 Aug 2007) | 6 lines

(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/trunk@79558 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-15 14:42:49 +00:00
Joshua Colp 9264d5007a (closes issue #10427)
Reported by: pj
Two of the three places ast_waitfor_nandfds could branch off to did not clear outfd and exception. If the calling function did not clear these there was a chance they could get a false positive on testing to see whether they were set.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@79379 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-14 14:17:43 +00:00
Steve Murphy 4f98b05cd5 Don't ask me why, but waitfordigit will immediately return a 1 on my system, unless the outfd is initialized to -1 before calling the nandfds func
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@79378 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-14 13:46:58 +00:00
Russell Bryant 5f0c3e7dbc constify the return value of reason2str
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@79176 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-13 14:23:38 +00:00
Steve Murphy 526d1f39a2 Merged revisions 79099 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r79099 | murf | 2007-08-10 14:53:43 -0600 (Fri, 10 Aug 2007) | 1 line

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/trunk@79100 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-10 21:03:06 +00:00
Joshua Colp e927902fe7 Bring up to date with poll changes.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@79074 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-10 18:37:32 +00:00
Steve Murphy cc6a96c580 Merged revisions 79049 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r79049 | murf | 2007-08-10 12:25:51 -0600 (Fri, 10 Aug 2007) | 1 line

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/trunk@79068 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-10 18:35:15 +00:00
Steve Murphy f223818927 Merged revisions 79044 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r79044 | murf | 2007-08-10 11:43:49 -0600 (Fri, 10 Aug 2007) | 1 line

This will help debug; from a question asked on #asterisk
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@79045 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-10 17:48:19 +00:00
Russell Bryant e113d36aa4 Merge a set of device state improvements from team/russell/events.
The way a device state change propagates is kind of silly, in my opinion.  A
device state provider calls a function that indicates that the state of a
device has changed.  Then, another thread goes back and calls a callback for
the device state provider to find out what the new state is before it can go
send it off to whoever cares.

I have changed it so that you can include the state that the device has changed
to in the first function call from the device state provider.  This removes the
need to have to call the callback, which locks up critical containers to go find
out what the state changed to.

This change set changes the "simple" device state providers to use the new method.
This includes parking, meetme, and SLA.

I have also mostly converted chan_agent in my branch, but still have some more
things to think through before presenting the plan for converting channel drivers
to ensure all of the right events get generated ...


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@79027 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-10 16:24:11 +00:00
Joshua Colp 845cba6792 Merged revisions 78955 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r78955 | file | 2007-08-10 11:15:53 -0300 (Fri, 10 Aug 2007) | 2 lines

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/trunk@78956 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-10 14:17:42 +00:00
Joshua Colp 22114b509d Add support for using epoll instead of poll. This should increase scalability and is done in such a way that we should be able to add support for other poll() replacements.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@78683 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-08 21:44:58 +00:00
Joshua Colp 602198c402 Merge audiohooks branch into trunk. This is a new API for developers to listen and manipulate the audio going through a channel.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@78649 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-08 19:30:52 +00:00
Russell Bryant 668a334f85 Add another big set of doxygen documentation improvements from snuffy.
(closes issue #9892)
(closes issue #10395)


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@78541 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-07 23:04:01 +00:00
Joshua Colp 218241f174 Use the linkedlists.h macros for the manager action list.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@78521 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-07 22:13:40 +00:00
Joshua Colp b4778de562 (closes issue #10225)
Reported by: klaus3000
Clean up AST_FORMAT_LIST list. It may have mattered in the old days to have undefined entries but these days it does not.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@78338 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-07 15:40:43 +00:00
Joshua Colp 9ef1b0a974 Extend the ast_senddigit and ast_dtmf_stream API calls to allow the duration of the DTMF digit(s) to be specified and make the SendDTMF application have the capability to use it.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@78278 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-06 21:52:30 +00:00
Joshua Colp 431c60f818 Merged revisions 78275 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r78275 | file | 2007-08-06 18:41:13 -0300 (Mon, 06 Aug 2007) | 2 lines

Add additional DTMF log messages to help when debugging issues.

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@78276 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-06 21:43:09 +00:00
Doug Bailey 3e426df072 Change the fsk filter used in CID and TDD decode to an integer based implementation
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@78227 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-06 19:52:40 +00:00
Mark Michelson c4c0e45c8b Merged revisions 78103 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r78103 | mmichelson | 2007-08-03 15:25:22 -0500 (Fri, 03 Aug 2007) | 7 lines

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/trunk@78186 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-06 16:54:51 +00:00
Jason Parker 3f0a1faed2 Merged revisions 78180 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

(closes issue #9938)
........
r78180 | qwell | 2007-08-06 11:30:51 -0500 (Mon, 06 Aug 2007) | 5 lines

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/trunk@78181 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-06 16:31:42 +00:00
Joshua Colp 5a1e2bfb50 Merged revisions 78172 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r78172 | file | 2007-08-06 12:27:24 -0300 (Mon, 06 Aug 2007) | 4 lines

(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/trunk@78173 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-06 15:28:28 +00:00
Russell Bryant befb383d16 Merged revisions 78095 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r78095 | russell | 2007-08-03 14:39:49 -0500 (Fri, 03 Aug 2007) | 28 lines

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/trunk@78096 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-03 19:41:42 +00:00
Steve Murphy 79b9bc6a2f Merged revisions 77945 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

................
r77945 | murf | 2007-08-02 12:21:40 -0600 (Thu, 02 Aug 2007) | 9 lines

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/trunk@77946 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-02 18:32:34 +00:00
Joshua Colp 1e4bd7a192 Instead of adding the SOLARIS check to each HAVE_SYSINFO check let's just make the sysinfo autoconf logic a bit pickier about what it considers a usable sysinfo.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@77878 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-01 19:37:59 +00:00
Joshua Colp a7aaa0bbc2 Solaris does not have a sysinfo like we know of on Linux.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@77876 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-01 19:12:36 +00:00
Joshua Colp 28fec17d59 Merged revisions 77867 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r77867 | file | 2007-08-01 14:52:11 -0300 (Wed, 01 Aug 2007) | 2 lines

Whoops, I meant R_5 not R5.

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@77868 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-01 17:53:09 +00:00
Joshua Colp d51079b70a Merged revisions 77863 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r77863 | file | 2007-08-01 14:22:35 -0300 (Wed, 01 Aug 2007) | 2 lines

Extend autoconf logic to determine which version of gethostbyname_r is on the system.

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@77864 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-01 17:27:09 +00:00
Russell Bryant 4e0947c5f1 Convert code that checks the _softhangup member of ast_channel directory to use
the ast_check_hangup() funciton.  This function takes scheduled hangups into
account.
(closes issue #10230, patch by Juggie)


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@77858 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-01 15:39:54 +00:00
Joshua Colp 96b96a5f72 Convert CLI helpers list to rwlist.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@77857 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-01 15:28:02 +00:00
Joshua Colp 3aaf122439 Add support for call forwarding and timeouts to the dialing API.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@77801 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-30 20:42:28 +00:00
Jason Parker fc0ea46f04 Merged revisions 77795 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

(closes issue #10083)
........
r77795 | qwell | 2007-07-30 15:17:08 -0500 (Mon, 30 Jul 2007) | 6 lines

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/trunk@77796 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-30 20:19:13 +00:00
Luigi Rizzo f66dbeb8f3 print formats as 0x%x instead of %d in a warning message.
Being bitmasks, it is a lot easier to read this way.



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@77793 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-30 19:42:25 +00:00
Russell Bryant 06f618a1ca Remove an XXX comment noting that it would be nice for a declaration to be
inside of a function.  (Yes, it would!)  Replace it with a note that explains
why it can't be done using the way that the AST_THREADSTORAGE macro is
currently defined.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@77790 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-30 19:31:27 +00:00
Russell Bryant ad094d5109 Merged revisions 77785 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r77785 | russell | 2007-07-30 13:55:15 -0500 (Mon, 30 Jul 2007) | 3 lines

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/trunk@77786 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-30 18:56:29 +00:00
Russell Bryant a2fc80d4a6 Merged revisions 77780 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r77780 | russell | 2007-07-30 12:29:43 -0500 (Mon, 30 Jul 2007) | 16 lines

(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/trunk@77781 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-30 17:31:29 +00:00
Joshua Colp 3733874f49 Merged revisions 77771 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r77771 | file | 2007-07-30 12:47:52 -0300 (Mon, 30 Jul 2007) | 6 lines

(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/trunk@77772 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-30 15:49:30 +00:00
Joshua Colp 7bd9b905e4 Merged revisions 77460 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r77460 | file | 2007-07-26 20:19:04 -0300 (Thu, 26 Jul 2007) | 4 lines

(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/trunk@77461 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-26 23:20:25 +00:00
Mark Michelson 57d5d489a7 Merged revisions 77380 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r77380 | mmichelson | 2007-07-26 15:35:17 -0500 (Thu, 26 Jul 2007) | 7 lines

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/trunk@77381 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-26 20:39:46 +00:00
Tilghman Lesher 03c973ab2d Merged revisions 77350 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r77350 | tilghman | 2007-07-26 14:32:17 -0500 (Thu, 26 Jul 2007) | 2 lines

Missed one

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@77351 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-26 19:33:47 +00:00
Tilghman Lesher 620a5a11e4 Merged revisions 77348 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r77348 | tilghman | 2007-07-26 14:27:18 -0500 (Thu, 26 Jul 2007) | 2 lines

Oops, that builtin define should be all-lowercase.

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@77349 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-26 19:29:12 +00:00
Russell Bryant f8483a0d04 Do a massive conversion for using the ast_verb() macro
(closes issue #10277, patches by mvanbaak)

Basically, this changes ...

if (option_verbose > 2)
   ast_verbose(VERBOSE_PREFIX_3, "Something\n");

to ...

ast_verb(3, "Something\n");


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@77299 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-26 15:49:18 +00:00
Russell Bryant 3ed2deb7df Ensure that the read from /dev/urandom returns a positive result
(closes issue #10308, reported by yehavi, patched by me)


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@77268 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-26 13:20:36 +00:00
Russell Bryant 77a75d46b2 Add a link to the list of assigned RTP payload types for convenience.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@77266 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-26 13:10:49 +00:00
Luigi Rizzo 5a96f8aa72 document how the RTP marker bit is passed for video frames,
and why this does not overwrite useful information.



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@77248 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-26 05:35:42 +00:00
Luigi Rizzo f1aadc8161 add an entry for h263plus in an empty slot of the rtp types.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@77233 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-26 04:47:54 +00:00
Mark Michelson b37f7ab577 Merged revisions 77154 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r77154 | mmichelson | 2007-07-25 16:52:47 -0500 (Wed, 25 Jul 2007) | 3 lines

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/trunk@77155 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-25 21:53:35 +00:00
Luigi Rizzo a1a5701821 change the debug level to 3 for an exceedingly annoying message
(3-deep nested loop)


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@77054 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-25 14:13:17 +00:00
Luigi Rizzo 8f4d728fe0 Merged revisions 77022 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r77022 | rizzo | 2007-07-25 11:34:01 +0200 (Wed, 25 Jul 2007) | 3 lines

set the sequence number in a frame for all frame types


........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@77023 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-25 09:45:15 +00:00
Joshua Colp 2db4e2b19b Move manager users list over to an rwlist.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@76712 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-24 02:59:49 +00:00
Joshua Colp 58004e3741 Don't bother calling AST_RWLIST_EMPTY on a list before AST_RWLIST_TRAVERSE, it's just a double check.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@76710 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-23 23:05:18 +00:00
Tilghman Lesher 55b1ee298e Merge the dialplan_aesthetics branch. Most of this patch simply converts applications
using old methods of parsing arguments to using the standard macros.  However, the big
change is that the really old way of specifying application and arguments separated by
a comma will no longer work (e.g. NoOp,foo|bar).  Instead, the way that has been
recommended since long before 1.0 will become the only method available (e.g. NoOp(foo,bar).


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@76703 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-23 19:51:41 +00:00
Russell Bryant eaebbdab61 (closes issue #10271)
Reported by: snuffy
Patches:
      doxygen-updates.diff uploaded by snuffy (license 35)

Another big batch of doxygen documentation updates


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@76559 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-23 14:32:04 +00:00
Russell Bryant f1f72312bb (closes issue #10192)
Reported by: bbryant
Patches:
      20070720__core_debug_by_file.patch uploaded by bbryant (license 36)
	  (with some modifications by me)
Tested by: russell, bbryant

This set of changes introduces the ability to set the core debug or verbose
levels on a per-file basis.  Interestingly enough, in 1.4, you have the ability
to set core debug for a single file, but that functionality was accidentally
lost in the conversion of the CLI commands to the new format.

This patch improves upon what was in 1.4 by letting you set it for more than 1
file, and by also supporting verbose.

*** Janitor Project ***

This patch also introduces a new macro, ast_verb(), which is similar
to ast_debug().  Setting the per file verbose value only works for messages that
use this macro.  Converting existing uses of ast_verbose() can be done like:

if (option_debug > 2)
   ast_verbose(VERBOSE_PREFIX_3 "Something useful\n");

...

ast_verb(3, "Something useful\n");



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@76555 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-23 14:21:41 +00:00
Joshua Colp 93b72115d1 Add support for using /dev/urandom to get random numbers on systems that support it.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@76296 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-21 14:39:52 +00:00
Russell Bryant d5b4fde291 Merged revisions 76132 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r76132 | russell | 2007-07-20 13:22:24 -0500 (Fri, 20 Jul 2007) | 6 lines

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/trunk@76138 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-20 18:28:15 +00:00
Luigi Rizzo 925ebbb2b3 expose struct ast_ha so external code can do things such as printing it
(e.g. chan_sip.c in a subsequent commit).

Obviously exposing the internals of a data structure is far from ideal
(especially in a case like this where the implementation is very
inefficient and will need to be changed at some point).

On the other hand, it was also unclear what additional APIs should
we provide instead, and because exposing the stucture has no impact
on source and binary compatibility, this seemed to me the best option at
this time.



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@76034 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-20 14:38:36 +00:00
Tilghman Lesher 4af3f12b29 Reduce some logging contention by switching several locks over to rwlocks
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@76015 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-20 01:54:52 +00:00
Steve Murphy 0e969271ae After some study, thought, comparing, etc. I've backed out the previous universal mod to make ast_flags a 64 bit thing. Instead, I added a 64-bit version of ast_flags (ast_flags64), and 64-bit versions of the test-flag, set-flag, etc. macros, and an app_parse_options64 routine, and I use these in app_dial alone, to eliminate the 30-option limit it had grown to meet. There is room now for 32 more options and flags. I was heavily tempted to implement some of the other ideas that were presented, but this solution does not intro any new versions of dial, doesn't have a different API, has a minimal/zero impact on code outside of dial, and doesn't seriously (I hope) affect the code structure of dial. It's the best I can think of right now. My goal was NOT to rewrite dial. I leave that to a future, coordinated effort.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@75983 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-19 23:24:27 +00:00
Russell Bryant f3b1eab2f3 Remove some debug code that was added in revision 75894, which removed some
other debug code.  :)


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@75911 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-19 14:46:49 +00:00
Luigi Rizzo 20448013df comment out some terribly expensive debugging code
in the body of ast_apply_ha()



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@75894 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-19 12:38:13 +00:00
Tilghman Lesher 81bc1d7af5 Merge in ast_strftime branch, which changes timestamps to be accurate to the microsecond, instead of only to the second
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@75706 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-18 19:47:20 +00:00
Steve Murphy 5ac24b25d3 This corrects the problem with flags and %lld formats on 64-bit machines, where uint64_t is NOT acceptable for %lld, and also works on 32-bit machines. At least, with gcc.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@75585 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-18 14:35:07 +00:00
Russell Bryant 9ffd55b6f9 Merged revisions 75403 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r75403 | russell | 2007-07-17 15:01:12 -0500 (Tue, 17 Jul 2007) | 12 lines

(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/trunk@75404 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-17 20:01:54 +00:00
Steve Murphy 8a7732f067 via 10206, I have added an option (e) to Dial to allow the h exten to get run on peer. Had to upgrade ast_flag stuff to 64 bits to do this.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@75400 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-17 19:40:29 +00:00
Luigi Rizzo 72b99a2817 Introduce ast_parse_arg() , a generic function to parse strings
in a consistent way. This is meant to replace the custom code
which is repeated all over the place in the various files when
parsing config files, CLI entries and other string information.

Right now the code supports parsing int32, uint32 and sockaddr_in with
optional default values and bound checks. It contains minimal error
checking, but that can be easily extended as the need arises.

Being a new API i am introducing this only in trunk, though I believe
that once the interface has been ironed out it might become a
worthwhile addition to 1.4 as well - basically, the first time
we will need to fix a piece of argument parsing code, we might as
well bring in this change and use the new API instead.



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@75379 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-17 14:32:15 +00:00
Kevin P. Fleming 7413c78ddb Merged revisions 75306 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

................
r75306 | kpfleming | 2007-07-16 15:53:24 -0500 (Mon, 16 Jul 2007) | 11 lines

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/trunk@75307 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-16 20:58:56 +00:00
Joshua Colp 344e6fd016 Change the function name slightly... just for kpfleming!
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@75260 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-16 18:38:28 +00:00
Joshua Colp e498488bde For my next trick I will make it so dialplan functions no longer need to call ast_module_user_add and ast_module_user_remove. These are now called in the ast_func_read and ast_func_write functions outside of the module.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@75255 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-16 18:24:29 +00:00
Joshua Colp b8cd949cce Applications no longer need to call ast_module_user_add and ast_module_user_remove. This is now taken care of in the pbx_exec function outside of the application.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@75200 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-16 14:39:29 +00:00
Russell Bryant c2603c1aeb resolve a compiler warning
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@75077 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-13 20:15:16 +00:00
Luigi Rizzo e950538bdd Small improvement to the STUN support so it can be used by
sockets other than RTP ones.

The main change is a new API function in main/rtp.c (see there
for a description)

    int ast_stun_request(int s, struct sockaddr_in *dst,
        const char *username, struct sockaddr_in *answer)

which can be used to send an STUN request on a socket, and
optionally wait for a reply and store the STUN_MAPPED_ADDRESS
into the 'answer' argument (obviously, the version that
waits for a reply is blocking, but this is no different
from DNS resolutions).

Internally there are minor modifications to let stun_handle_packet()
be somewhat configurable on how to parse the body of responses.

At the moment i am not committing any change to the clients,
but adding STUN client support is extremely simple, e.g. chan_sip.c
could do something like this:

    + add a variable to store the stun server address;

	static struct sockaddr_in stunaddr = { 0, };   /*!< stun server address */

    + add code to parse a config file of the form "stunaddr=my.stun.server.org:3478"
      (not shown for brevity);

    + right after binding the main sip socket, talk to the stun server to
      determine the externally visible address

	    if (stunaddr.sin_addr.s_addr != 0)
		ast_stun_request(sipsock, &stunaddr, NULL, &externip);

      so now 'externip' is set with the externally visible address.

so it is really trivial.

Similarly ast_stun_request could be called when creating the RTP
socket (possibly adding a struct sockaddr_in field in the struct
ast_rtp to store the externalip).



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@75034 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-13 16:22:09 +00:00
Joshua Colp 1f86a8bc2d Merged revisions 74922 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r74922 | file | 2007-07-12 16:17:59 -0300 (Thu, 12 Jul 2007) | 2 lines

Whoops... didn't want this to be returned to 0 each iteration.

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@74923 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-12 19:19:03 +00:00
Joshua Colp 8f3a5481dc Merged revisions 74888 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r74888 | file | 2007-07-12 14:16:28 -0300 (Thu, 12 Jul 2007) | 2 lines

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/trunk@74891 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-12 17:17:56 +00:00
Luigi Rizzo 75e2b34c4d more cleanup, this time to stun_handle_packet(). Among other things:
+ mark a potentially dangerous write-past-end-of-buffer
+ localize some variables in the block generating stun replies.

As before, not ready yet for a merge to 1.4



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@74850 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-12 16:21:12 +00:00
Luigi Rizzo 3d41c1ce94 a little bit of code cleanup to rtp.c, mostly to function
ast_rtp_new_with_bindaddr(): 

1. add comments to the logic of the main loop;
2. use a common exit point on failure so the cleanup is done only in one place;
3. handle failures in rtp_socket() in the main loop of the function;

No functional changes except for #3 above, so it is not yet
worthwhile merging this and other changes to 1.4

Once the cleanup work on this file will be complete (which among
other things should include some extensions to the stun support)
it might be a good thing to push all the changes to 1.4



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@74813 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-12 15:42:56 +00:00