[asterisk-commits] jpeeler: trunk r275682 - in /trunk: ./ main/channel.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Mon Jul 12 12:21:09 CDT 2010
Author: jpeeler
Date: Mon Jul 12 12:21:01 2010
New Revision: 275682
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=275682
Log:
Merged revisions 275665 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r275665 | jpeeler | 2010-07-12 11:58:39 -0500 (Mon, 12 Jul 2010) | 11 lines
Change ast_write to not stop generator when called from ast_prod.
For SIP channels configured with the progressinband option on, the ringback was
being immediately stopped. This problem was due to ast_prod being moved for a
deadlock fix in 259858. Prodding the channel after setting up the generator
triggered the check in ast_write to stop the generator. The fix here should
write the frame the same as was done before the call to ast_prod was moved.
(closes issue #17372)
Reported by: tech_admin
........
Modified:
trunk/ (props changed)
trunk/main/channel.c
Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.
Modified: trunk/main/channel.c
URL: http://svnview.digium.com/svn/asterisk/trunk/main/channel.c?view=diff&rev=275682&r1=275681&r2=275682
==============================================================================
--- trunk/main/channel.c (original)
+++ trunk/main/channel.c Mon Jul 12 12:21:01 2010
@@ -4271,7 +4271,7 @@
ast_debug(1, "Prodding channel '%s'\n", chan->name);
a.subclass.codec = chan->rawwriteformat;
a.data.ptr = nothing + AST_FRIENDLY_OFFSET;
- a.src = "ast_prod";
+ a.src = "ast_prod"; /* this better match check in ast_write */
if (ast_write(chan, &a))
ast_log(LOG_WARNING, "Prodding channel '%s' failed\n", chan->name);
}
@@ -4425,10 +4425,10 @@
res = 0; /* XXX explain, why 0 ? */
goto done;
}
- if (chan->generatordata) {
- if (ast_test_flag(chan, AST_FLAG_WRITE_INT))
- ast_deactivate_generator(chan);
- else {
+ if (chan->generatordata && strcasecmp(fr->src, "ast_prod")) {
+ if (ast_test_flag(chan, AST_FLAG_WRITE_INT)) {
+ ast_deactivate_generator(chan);
+ } else {
if (fr->frametype == AST_FRAME_DTMF_END) {
/* There is a generator running while we're in the middle of a digit.
* It's probably inband DTMF, so go ahead and pass it so it can
More information about the asterisk-commits
mailing list