From: Torrey Searle Date: Thu, 29 Sep 2016 18:08:07 +0000 (+0200) Subject: res_fax: Fix a tight race condition causing fax to crash in audio fallback X-Git-Tag: 11.24.0-rc1~2^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c0c041d9c7b3196344342adbda062046806e874a;p=thirdparty%2Fasterisk.git res_fax: Fix a tight race condition causing fax to crash in audio fallback When T.38 gets rejected and G711 failback occurs there is a period of time where neither AST_FAX_TECH_T38 nor AST_FAX_TECH_AUDIO is set, leading to a crash. Change-Id: Icc3f457b2292d48a9d7843dac0028347420cc982 --- diff --git a/res/res_fax.c b/res/res_fax.c index 833a3c8eec..0636540398 100644 --- a/res/res_fax.c +++ b/res/res_fax.c @@ -1344,6 +1344,13 @@ static int generic_fax_exec(struct ast_channel *chan, struct ast_fax_session_det ast_format_clear(&orig_read_format); chancount = 1; + /* Make sure one or the other is set to avoid race condition */ + if (t38negotiated) { + details->caps |= AST_FAX_TECH_T38; + } else { + details->caps |= AST_FAX_TECH_AUDIO; + } + /* create the FAX session */ if (!(fax = fax_session_new(details, chan, reserved, token))) { ast_log(LOG_ERROR, "Can't create a FAX session, FAX attempt failed.\n");