Review Board 1.7.16


[15609] Prevent a stream of warnings about the voice frame queue too long

Review Request #452 - Created Dec. 30, 2009 and submitted

Tilghman Lesher
/branches/1.4
15609
Reviewers
asterisk-dev
Asterisk
A long running issue is that in certain circumstances, a Local channel will start spewing "WARNING[23025]: channel.c:952 __ast_queue_frame: Exceptionally long voice queue length queuing to Local" messages, at the end of a call.

Basically, this patch realizes that if a channel does not have a thread running (i.e. a slave channel) and there is no bridge (no thread to copy frames from the slave channel), then queuing frames to that channel is completely useless and only causes messages to be spewed.

However, given the simplicity of the patch for a problem which has consumed a great many developer hours, I would like verification that this is the correct approach.
Verified that the patch fixes the problem for the reporter.

Diff revision 1 (Latest)

  1. /branches/1.4/channels/chan_local.c: Loading...
/branches/1.4/channels/chan_local.c
Revision 236182 New Change
[20] 209 lines
[+20] [+] static int local_queue_frame(struct local_pvt *p, int isoutbound, struct ast_frame *f,
210
		}
210
		}
211
		return -1;
211
		return -1;
212
	}
212
	}
213

    
   
213

   
214
	if (other) {
214
	if (other) {

    
   
215
		if (other->pbx || other->_bridge) {
215
		ast_queue_frame(other, f);
216
			ast_queue_frame(other, f);

    
   
217
		} /* else the frame won't go anywhere */
216
		ast_channel_unlock(other);
218
		ast_channel_unlock(other);
217
	}
219
	}
218

    
   
220

   
219
	ast_clear_flag(p, LOCAL_GLARE_DETECT);
221
	ast_clear_flag(p, LOCAL_GLARE_DETECT);
220

    
   
222

   
[+20] [20] 597 lines
  1. /branches/1.4/channels/chan_local.c: Loading...

https://reviewboard.asterisk.org/ runs on a server provided by Digium, Inc. and uses bandwidth donated to the open source Asterisk community by API Digital Communications in Huntsville, AL USA.
Please report problems with this site to asteriskteam@digium.com.