Commit Graph

42 Commits

Author SHA1 Message Date
Russell Bryant
456cad8a47 Improve DTMF handling in ast_read() even more in response to a discussion on
the asterisk-dev mailing list.  I changed the enforced minimum length of a
digit from 100ms to 80ms.  Furthermore, I made it now enforce a gap of 45ms in
between digits.  These values are not configurable in a configuration file
right now, but they can be easily changed near the top of main/channel.c.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@61781 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-04-24 19:00:06 +00:00
Russell Bryant
baab073219 Ensure that digits passing through Asterisk have a reasonable minimum length.
It is currently 100 ms.  If someone thinks this should be different, feel free
to speak up.  (related to issues #8944, #9250, and #9348)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@61763 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-04-23 17:57:32 +00:00
Steve Murphy
7d5a79a0b9 This is a big improvement over the current CDR fixes. It may still need refinement, but this won't have as many folks bothered.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@60989 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-04-09 18:32:07 +00:00
Steve Murphy
798039b4d8 several changes via kpflemings review
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@59522 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-03-30 17:51:17 +00:00
Steve Murphy
9c69e34f62 These mods fix CDR issues from 8221, 8593, 8680, 8743, and perhaps others. Mainly with CDRs generated from transfer situations.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@59486 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-03-30 14:11:59 +00:00
Tilghman Lesher
185d7f5a3a Merged revisions 56684 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r56684 | tilghman | 2007-02-25 08:38:03 -0600 (Sun, 25 Feb 2007) | 3 lines

Issue 9130 - If prev is the last item on the channel list, then evaluating
additional conditions (e.g. name prefix) will cause a NULL dereference.

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@56685 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-02-25 14:46:41 +00:00
Joshua Colp
4565c1483c Merged revisions 56230 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r56230 | file | 2007-02-22 13:44:24 -0500 (Thu, 22 Feb 2007) | 2 lines

Only change the original or clone channel if it's the channel behind the proxy channel, not if it's just a regular bridged channel.

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@56231 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-02-22 18:49:39 +00:00
Joshua Colp
7d029cabf6 Add G722 to ast_best_codec. If anyone disagrees with it's placement, feel free to change it. (issue #9045 reported by gork)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@54290 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-02-14 01:09:40 +00:00
Paul Cadach
3a68e31940 Provide correct DTMF duration
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@53879 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-02-10 09:07:11 +00:00
Russell Bryant
9440d428a0 Merged revisions 51843 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r51843 | russell | 2007-01-23 18:57:28 -0600 (Tue, 23 Jan 2007) | 6 lines

Fix an issue related to synchronization of recordings when using Monitor().
The bug is a miscalculation of the amount to seek the stream for writing to
disk when the number of samples coming in and out of a channel do not match up.
(issue #8298, #8887, report and patch by guillecabeza, patch files created and
 testing done by whoiswes)

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@51848 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-01-24 00:59:58 +00:00
Russell Bryant
33235b40d6 Merge the changes from the /team/group/vldtmf_fixup branch.
The main bug being addressed here is a problem introduced when two SIP
channels using SIP INFO dtmf have their media directly bridged.  So, when a
DTMF END frame comes into Asterisk from an incoming INFO message, Asterisk
would try to emulate a digit of some length by first sending a DTMF BEGIN
frame and sending a DTMF END later timed off of incoming audio.  However,
since there was no audio coming in, the DTMF_END was never generated.  This
caused DTMF based features to no longer work.

To fix this, the core now knows when a channel doesn't care about DTMF BEGIN
frames (such as a SIP channel sending INFO dtmf).  If this is the case, then
Asterisk will not emulate a digit of some length, and will instead just pass
through the single DTMF END event.

Channel drivers also now get passed the length of the digit to their digit_end
callback.  This improves SIP INFO support even further by enabling us to put
the real digit duration in the INFO message instead of a hard coded 250ms.
Also, for an incoming INFO message, the duration is read from the frame and
passed into the core instead of just getting ignored.

(issue #8597, maybe others...)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@51311 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-01-19 17:49:38 +00:00
Jason Parker
76eb4e76dc Add some more checks for option_debug before ast_log(LOG_DEBUG, ...) calls.
Issue 8832, patch(es) by tgrman


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@51265 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-01-18 22:50:23 +00:00
Jason Parker
eab59cabdb Fix an issue with deprecated commands
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@51241 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-01-18 18:28:29 +00:00
Joshua Colp
e4de85c4f5 Only write a frame out to the channel if one exists. There are cases where one may not and would therefore cause the channel driver to segfault. (issue #8434 reported by slimey)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@50727 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-01-13 06:00:24 +00:00
Joshua Colp
ac75028a50 Don't keep repeating the warning over and over when the end of the call is reached. (issue #8724 reported by xrg)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@49675 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-01-05 22:14:47 +00:00
Kevin P. Fleming
a299485952 since these variables all have static duration, none of them need initializers (they default to zero anyway)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@49006 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-12-27 22:06:56 +00:00
Joshua Colp
cb11263607 We need to ensure timelimit stuff is included as well so warnings get played. (issue #8050 reported by KNK)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@47707 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-11-15 21:33:41 +00:00
Steve Murphy
729ce4d791 This update fixes 7531
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@47348 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-11-08 23:14:18 +00:00
Steve Murphy
517978fd5f These mods are to solve the problem in bug 7506. It's a lot of rework to solve a fairly small problem... such is life.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@47303 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-11-07 23:46:41 +00:00
Tilghman Lesher
e05a2752e8 Reverse change of "show" to "list" and make several other commands more consistent with "category verb arguments"
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@47051 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-11-02 23:00:20 +00:00
Tilghman Lesher
de9c3aaa8d Pass through a frame if we don't know what it is, rather than trying to pass a
NULL, which will segfault a channel driver (Bug 8149)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@46078 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-10-24 03:01:00 +00:00
Russell Bryant
0a78fea2ac Don't attempt to access private data members of the pthread_mutex_t object,
because this does not work on all linux systems.  Instead, just access
the reentrancy field in the ast_mutex_info struct when DEBUG_THREADS is
enabled.  If DEBUG_CHANNEL_LOCKS is enabled, the developer probably has
DEBUG_THREADS on as well.
(issue #8139, me)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@45441 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-10-18 02:41:36 +00:00
Kevin P. Fleming
227d415709 optimize the 'quick response' code a bit more... no more malloc() or memset() for each response
expand stringfields API a bit to allow reusing the stringfield pool on a structure when needed, and remove some unnecessary code when the structure was being freed


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@45408 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-10-17 22:24:10 +00:00
Paul Cadach
53024e3508 CHANNEL() function sometime mix parameter and value
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@44809 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-10-10 16:44:54 +00:00
Russell Bryant
439f15bdb9 Merged revisions 43778 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r43778 | russell | 2006-09-27 12:54:30 -0400 (Wed, 27 Sep 2006) | 42 lines

Fix a problem that occurred if a user entered a digit that matched a bridge
feature that was configured using multiple digits, and the digit that was
pressed timed out in the feature digit timeout period.  For example, if blind
transfer is configured as '##', and a user presses just '#'.  In this situation,
the call would lock up and no longer pass any frames.
(issue #7977 reported by festr, and issue #7982 reported by michaels and
 valuable input provided by mneuhauser and kuj.  Fixed by me, with testing help
 and peer review from Joshua Colp).

There are a couple of issues involved in this fix:

1) When ast_generic_bridge determines that there has been a timeout, it returned
   AST_BRIDGE_RETRY.  Then, when ast_channel_bridge gets this result, it calls
   ast_generic_bridge over again with the same timestamp for the next event.
   This results in an endless loop of nothing until the call is terminated.
   This is resolved by simply changing ast_generic_bridge to return 
   AST_BRIDGE_COMPLETE when it sees a timeout.

2) I also changed ast_channel_bridge such that if in the process of calculating
   the time until the next event, it knows a timeout has already occured, to
   immediately return AST_BRIDGE_COMPLETE instead of attempting to bridge the
   channels anyway.

3) In the process of testing the previous two changes, I ran into a problem in
   res_features where ast_channel_bridge would return because it determined
   that there was a timeout.  However, ast_bridge_call in res_features would
   then determine by its own calculation that there was still 1 ms before the
   timeout really occurs.  It would then proceed, and since the bridge broke
   out and did *not* return a frame, it interpreted this as the call was over
   and hung up the channels.

   The reason for this was because ast_bridge_call in res_features and
   ast_channel_bridge in channel.c were using different times for their
   calculations.  channel.c uses the start_time on the bridge config, which
   is the time that the feature digit was recieved.  However, res_features
   had another time, 'start', which was set right before calling 
   ast_channel_bridge.  'start' will always be slightly after start_time in the
   bridge config, and sometimes enough to round up to one ms.

   This is fixed by making ast_bridge_call use the same time as 
   ast_channel_bridge for the timeout calculation.

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@43779 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-09-27 16:55:49 +00:00
Joshua Colp
d95288fdf8 Slight overhaul of the whisper support. 1. We need to duplicate the frame from ast_translate 2. We need to ensure we always have signed linear coming in for signed linear combining. 3. We need to ensure we are always feeding signed linear out. 4. Properly store and restore write format when beeping on the channel we are whispering on. 5. Properly discontinue the stream on the channel for the beep. (issue #8019 reported by timkelly1980)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@43695 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-09-26 20:09:41 +00:00
Kevin P. Fleming
53ff7ae7cd all the Linux systems I have don't use '__m_count' for this field, so I don't know where this came from...
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@43486 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-09-22 15:51:13 +00:00
Kevin P. Fleming
fcb999c01c merge qwell's CLI verbification work
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@43212 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-09-18 19:54:18 +00:00
Joshua Colp
0f3eaaf703 Merged revisions 42600 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r42600 | file | 2006-09-09 16:24:19 -0400 (Sat, 09 Sep 2006) | 2 lines

Only truly consider the channel in the same format if the format matches the raw format OR if a translation path already exists to translate between them. (issue #7887 reported by softins & issue #7803 reported by alvaro_palma_aste). Thanks goes to stubert for giving me access to a box and showing me a scenario where this occured.

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@42601 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-09-09 20:25:45 +00:00
Joshua Colp
160cea6139 Merged revisions 42452 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r42452 | file | 2006-09-08 14:50:43 -0400 (Fri, 08 Sep 2006) | 2 lines

Swap spies during masquerading

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@42453 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-09-08 18:53:41 +00:00
Joshua Colp
d597b76c36 whentohangup is already in seconds, just need to convert to milliseconds
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@42374 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-09-08 02:54:45 +00:00
Joshua Colp
55d594e9da Make the difference clear about what the responsibilities of the core and a spy are when it comes to spying on a channel. The core is responsible for adding a spy to a channel, feeding frames into the spy, removing the spy from the channel, and notifying the spy that is has been detached. The spy is responsible for reading frames in, and cleaning itself up. Each side will not try to do the other's job.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@41959 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-09-03 23:30:37 +00:00
Joshua Colp
6fdd2ef790 Tweak the if statement a bit
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@41865 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-09-03 16:44:49 +00:00
Russell Bryant
e576ac0930 Don't use ast_frdup() in the AST_LIST_INSERT_TAIL macro directly. That was a
very stupid thing to do.  It ends up duplicating the frame twice, linking in
one of them and setting the tail pointer to the other one.  Sorry ...

Thanks to file for pointing out the breakage!!!  file rocks.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@41864 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-09-03 16:41:02 +00:00
Joshua Colp
9edf55b64d Merged revisions 41690 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r41690 | file | 2006-09-01 12:28:08 -0400 (Fri, 01 Sep 2006) | 2 lines

Don't treat an unexpected control subclass as voice (issue #7858 reported by PCadach)

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@41693 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-09-01 16:34:57 +00:00
Joshua Colp
d6096858d0 Don't fail the write if they try to write a NULL or IAX frame as we just ignore these.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@41596 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-08-31 18:47:51 +00:00
Joshua Colp
c6977b9983 Merge in VLDTMF support with Zaptel/Core done by the ever great Darumkilla Russell Bryant and the RTP portion done by myself, Muffinlicious Joshua Colp. This has gone through so many discussions/revisions it's not funny but we finally have it!
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@41507 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-08-31 01:59:02 +00:00
Russell Bryant
1ffff64e66 fix a bug introduced when I merged my frame caching branch. Queue the
translated frame to the spies, *not* the original frame.  Thanks PCadach!


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@41389 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-08-30 17:07:07 +00:00
Russell Bryant
f7e7161607 Merge team/russell/frame_caching
There are some situations in Asterisk where ast_frame and/or iax_frame
structures are rapidly allocatted and freed (at least 50 times per second
for one call).

This code significantly improves the performance of ast_frame_header_new(), 
ast_frdup(), ast_frfree(), iax_frame_new(), and iax_frame_free() by keeping
a thread-local cache of these structures and using frames from the cache 
whenever possible instead of calling malloc/free every time.

This commit also converts the ast_frame and iax_frame structures to use the
linked list macros.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@41278 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-08-29 20:50:36 +00:00
Russell Bryant
1ff5a0988d Merged revisions 40994 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r40994 | russell | 2006-08-24 15:41:26 -0400 (Thu, 24 Aug 2006) | 11 lines

Fix a few issues related to the handling of channel variables
 - in pbx_builtin_serialize_variables(), the variable list traversal would stop
   on a variables with empty name/values, which is not appropriate
 - When removing the GROUP variables, use AST_LIST_REMOVE_CURRENT instead of
   AST_LIST_REMOVE
 - During masquerading, when copying the variables list from one channel to the
   other, using AST_LIST_INSERT_TAIL is not valid for appending a whole list.
   It leaves the tail pointer of the list invalid.  Introduce a new macro,
   AST_LIST_APPEND_LIST that appends a list properly.
(issue #7802, softins)

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@40995 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-08-24 19:53:43 +00:00
Russell Bryant
389c605a67 - use the atomic operations for incrementing the unique int
- free the string fields allocation if ast_create_channel() failes to open the
  alert pipe
- formatting tweaks


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@40782 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-08-21 19:35:28 +00:00
Kevin P. Fleming
0a27d8bfe5 merge new_loader_completion branch, including (at least):
- restructured build tree and makefiles to eliminate recursion problems
  - support for embedded modules
  - support for static builds
  - simpler cross-compilation support
  - simpler module/loader interface (no exported symbols)



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@40722 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2006-08-21 02:11:39 +00:00