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
* 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;
}