From fd40752954b842eb45fc6b6a0ef03fa21d0eab2b Mon Sep 17 00:00:00 2001 From: Naveen Albert Date: Thu, 13 May 2021 09:50:02 -0400 Subject: [PATCH] chan_sip: Expand hook flash recognition. Some ATAs send hook flash events as application/hook-flash, rather than a DTMF event. Now, we also recognize hook-flash as a flash event. ASTERISK-29370 Change-Id: I1c3b82a040dff3affcd94bad8ce33edc90c04725 --- channels/chan_sip.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 77e1b24252..d00d615ba0 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -22627,6 +22627,18 @@ static void handle_request_info(struct sip_pvt *p, struct sip_request *req) const char *c = sip_get_header(req, "Content-Type"); /* Need to check the media/type */ + + if (!strcasecmp(c, "application/hook-flash")) { + /* send a FLASH event, for ATAs that send flash as hook-flash not dtmf */ + struct ast_frame f = { AST_FRAME_CONTROL, { AST_CONTROL_FLASH, } }; + ast_queue_frame(p->owner, &f); + if (sipdebug) { + ast_verbose("* DTMF-relay event received: FLASH\n"); + } + transmit_response(p, "200 OK", req); + return; + } + if (!strcasecmp(c, "application/dtmf-relay") || !strcasecmp(c, "application/vnd.nortelnetworks.digits") || !strcasecmp(c, "application/dtmf")) {