[asterisk-commits] jpeeler: branch 1.6.2 r275706 - in /branches/1.6.2: ./ main/channel.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Mon Jul 12 12:26:17 CDT 2010


Author: jpeeler
Date: Mon Jul 12 12:26:10 2010
New Revision: 275706

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=275706
Log:
Merged revisions 275682 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/trunk

................
  r275682 | jpeeler | 2010-07-12 12:21:01 -0500 (Mon, 12 Jul 2010) | 18 lines
  
  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:
    branches/1.6.2/   (props changed)
    branches/1.6.2/main/channel.c

Propchange: branches/1.6.2/
------------------------------------------------------------------------------
Binary property 'trunk-merged' - no diff available.

Modified: branches/1.6.2/main/channel.c
URL: http://svnview.digium.com/svn/asterisk/branches/1.6.2/main/channel.c?view=diff&rev=275706&r1=275705&r2=275706
==============================================================================
--- branches/1.6.2/main/channel.c (original)
+++ branches/1.6.2/main/channel.c Mon Jul 12 12:26:10 2010
@@ -3454,7 +3454,7 @@
 		ast_debug(1, "Prodding channel '%s'\n", chan->name);
 		a.subclass = 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);
 	}
@@ -3604,10 +3604,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