From fa71f498ce7ea076c5fda732e9036c1bcf1f20af Mon Sep 17 00:00:00 2001 From: Joshua Colp Date: Wed, 29 Aug 2018 07:18:08 -0300 Subject: [PATCH] res_fax: Handle fax gateway being started more than once. The T.38 fax gateway state machine can cause the fax gateway to be started more than once on a channel depending on the responses of the remote endpoint. This would previously leak the channel name, channel unique id, and underlying fax engine state. This change instead makes it so that if the fax gateway session is already present and not reserved the fax gateway is not started again. ASTERISK-27981 Change-Id: I552d95086860cb18f2522ee40ef47b13b6da2e0e --- res/res_fax.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/res/res_fax.c b/res/res_fax.c index 823d560d9b..ce5687da8c 100644 --- a/res/res_fax.c +++ b/res/res_fax.c @@ -2914,6 +2914,11 @@ static int fax_gateway_start(struct fax_gateway *gateway, struct ast_fax_session struct ast_fax_session *s; int start_res; + /* if the fax gateway is already started then do nothing */ + if (gateway->s && gateway->s->state != AST_FAX_STATE_RESERVED) { + return 0; + } + /* create the FAX session */ if (!(s = fax_session_new(details, chan, gateway->s, gateway->token))) { gateway->token = NULL;