[asterisk-dev] tilghman: branch 1.6.0 r244072 - in /branches/1.6.0: ./ channels/ main/
Russell Bryant
russell at digium.com
Mon Feb 1 12:42:08 CST 2010
This would have been a good candidate for reviewboard. This is a
non-trivial change.
On 02/01/2010 11:59 AM, SVN commits to the Asterisk project wrote:
> Author: tilghman
> Date: Mon Feb 1 11:59:37 2010
> New Revision: 244072
>
> URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=244072
> Log:
> Merged revisions 244071 via svnmerge from
> https://origsvn.digium.com/svn/asterisk/trunk
>
> ................
> r244071 | tilghman | 2010-02-01 11:53:39 -0600 (Mon, 01 Feb 2010) | 22 lines
>
> Merged revisions 244070 via svnmerge from
> https://origsvn.digium.com/svn/asterisk/branches/1.4
>
> ........
> r244070 | tilghman | 2010-02-01 11:46:31 -0600 (Mon, 01 Feb 2010) | 16 lines
>
> Revert previous chan_local fix (r236981) and fix instead by destroying expired frames in the queue.
>
> (closes issue #16525)
> Reported by: kobaz
> Patches:
> 20100126__issue16525.diff.txt uploaded by tilghman (license 14)
> 20100129__issue16525__1.6.0.diff.txt uploaded by tilghman (license 14)
> Tested by: kobaz, atis
>
> (closes issue #16581)
> Reported by: ZX81
>
> (closes issue #16681)
> Reported by: alexr1
> ........
> ................
>
> Modified:
> branches/1.6.0/ (props changed)
> branches/1.6.0/channels/chan_local.c
> branches/1.6.0/main/channel.c
>
> Propchange: branches/1.6.0/
> ------------------------------------------------------------------------------
> Binary property 'trunk-merged' - no diff available.
>
> Modified: branches/1.6.0/channels/chan_local.c
> URL: http://svnview.digium.com/svn/asterisk/branches/1.6.0/channels/chan_local.c?view=diff&rev=244072&r1=244071&r2=244072
> ==============================================================================
> --- branches/1.6.0/channels/chan_local.c (original)
> +++ branches/1.6.0/channels/chan_local.c Mon Feb 1 11:59:37 2010
> @@ -217,9 +217,7 @@
> }
>
> if (other) {
> - if (other->pbx || other->_bridge || !ast_strlen_zero(other->appl)) {
> - ast_queue_frame(other, f);
> - } /* else the frame won't go anywhere */
> + ast_queue_frame(other, f);
> ast_channel_unlock(other);
> }
>
>
> Modified: branches/1.6.0/main/channel.c
> URL: http://svnview.digium.com/svn/asterisk/branches/1.6.0/main/channel.c?view=diff&rev=244072&r1=244071&r2=244072
> ==============================================================================
> --- branches/1.6.0/main/channel.c (original)
> +++ branches/1.6.0/main/channel.c Mon Feb 1 11:59:37 2010
> @@ -1028,22 +1028,22 @@
> }
> }
>
> - if ((queued_frames + new_frames)> 128) {
> - ast_log(LOG_WARNING, "Exceptionally long queue length queuing to %s\n", chan->name);
> - while ((f = AST_LIST_REMOVE_HEAD(&frames, frame_list))) {
> - ast_frfree(f);
> - }
> - ast_channel_unlock(chan);
> - return 0;
> - }
> -
> - if ((queued_voice_frames + new_voice_frames)> 96) {
> - ast_log(LOG_WARNING, "Exceptionally long voice queue length queuing to %s\n", chan->name);
> - while ((f = AST_LIST_REMOVE_HEAD(&frames, frame_list))) {
> - ast_frfree(f);
> - }
> - ast_channel_unlock(chan);
> - return 0;
> + if ((queued_frames + new_frames> 128 || queued_voice_frames + new_voice_frames> 96)) {
> + int count = 0;
> + ast_log(LOG_WARNING, "Exceptionally long %squeue length queuing to %s\n", queued_frames + new_frames> 128 ? "" : "voice ", chan->name);
> + AST_LIST_TRAVERSE_SAFE_BEGIN(&chan->readq, cur, frame_list) {
> + /* Save the most recent frame */
> + if (!AST_LIST_NEXT(cur, frame_list)) {
> + break;
> + } else if (cur->frametype == AST_FRAME_VOICE || cur->frametype == AST_FRAME_VIDEO || cur->frametype == AST_FRAME_NULL) {
> + if (++count> 64) {
> + break;
> + }
> + AST_LIST_REMOVE_CURRENT(frame_list);
> + ast_frfree(cur);
> + }
> + }
> + AST_LIST_TRAVERSE_SAFE_END;
> }
>
> if (after) {
>
>
I don't think this is really a fix. First, it has some coding
guidelines violations (missing spaces around '>'). However, it puts the
code back to where that message is going to come up and freak people out
in the same situations that it did before. Please fill me in if I am
missing something.
--
Russell Bryant
Digium, Inc. | Engineering Manager, Open Source Software
445 Jan Davis Drive NW - Huntsville, AL 35806 - USA
www.digium.com -=- www.asterisk.org -=- blogs.asterisk.org
More information about the asterisk-dev
mailing list