[asterisk-commits] mjordan: trunk r349823 - in /trunk: ./ res/res_fax.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Thu Jan 5 17:58:30 CST 2012


Author: mjordan
Date: Thu Jan  5 17:58:26 2012
New Revision: 349823

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=349823
Log:
Fix premature free'ing of the frame committed in r349608

Even though we set the frame to the ast_null_frame and return that,
the caller of the frame hook may still need the frame.  This now is
a bit more careful about when it frees the frame, i.e., only under
the same conditions that applied when we duplicated it in the first
place.
........

Merged revisions 349822 from http://svn.asterisk.org/svn/asterisk/branches/10

Modified:
    trunk/   (props changed)
    trunk/res/res_fax.c

Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-10-merged' - no diff available.

Modified: trunk/res/res_fax.c
URL: http://svnview.digium.com/svn/asterisk/trunk/res/res_fax.c?view=diff&rev=349823&r1=349822&r2=349823
==============================================================================
--- trunk/res/res_fax.c (original)
+++ trunk/res/res_fax.c Thu Jan  5 17:58:26 2012
@@ -3086,7 +3086,11 @@
 		 * write would fail, or even if a failure would be fatal so for
 		 * now we'll just ignore the return value. */
 		gateway->s->tech->write(gateway->s, f);
-		ast_frfree(f);
+		if ((f->frametype == AST_FRAME_VOICE) && (f->subclass.format.id != AST_FORMAT_SLINEAR) && active->readtrans) {
+			/* Only free the frame if we translated / duplicated it - otherwise,
+			 * let whatever is outside the frame hook do it */
+			ast_frfree(f);
+		}
 		f = &ast_null_frame;
 		ao2_ref(details, -1);
 		return f;




More information about the asterisk-commits mailing list