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
changes/01/4001/3
Torrey Searle 9 years ago committed by Joshua Colp
parent 69fb442890
commit c0c041d9c7

@ -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");

Loading…
Cancel
Save