From 73b5e0973819951496b43a7c90f6223c4fe6d3f2 Mon Sep 17 00:00:00 2001 From: "Joshua C. Colp" Date: Wed, 27 May 2020 05:47:07 -0300 Subject: [PATCH] res_fax: Don't consume frames given to fax gateway on write. In a particular fax gateway scenario whereby it would have to translate using the read translation path on a channel the frame being translated would be consumed. When the frame is in the write path it is not permitted to free the frame as the caller expects it to continue to exist. This change makes it so that the frame is only consumed on the read path where it is acceptable to free it. ASTERISK-28900 Change-Id: I011c321288a1b056d92b37c85e229f4a28ee737d --- res/res_fax.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/res_fax.c b/res/res_fax.c index ebb2b46266..b895c57ad6 100644 --- a/res/res_fax.c +++ b/res/res_fax.c @@ -3568,7 +3568,7 @@ static struct ast_frame *fax_gateway_framehook(struct ast_channel *chan, struct * translation is done, so we need to translate here */ if ((f->frametype == AST_FRAME_VOICE) && (ast_format_cmp(f->subclass.format, ast_format_slin) != AST_FORMAT_CMP_EQUAL) && (readtrans = ast_channel_readtrans(active))) { - if ((f = ast_translate(readtrans, f, 1)) == NULL) { + if ((f = ast_translate(readtrans, f, event == AST_FRAMEHOOK_EVENT_WRITE ? 0 : 1)) == NULL) { f = &ast_null_frame; return f; } -- 2.47.2