From: Matthew Jordan Date: Mon, 16 Jun 2014 02:39:29 +0000 (+0000) Subject: channels/chan_sip: Forbid remote bridging if T.38 is negotiated X-Git-Tag: 12.4.0-rc1~44 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=81003106837737a2a1676b23416b79835cb346a2;p=thirdparty%2Fasterisk.git channels/chan_sip: Forbid remote bridging if T.38 is negotiated When a framehook is removed - such as the fax gateway framehook - the bridge framework will re-evaluate the bridge mixing technologies to see if it can improve the bridging. When this occurs, get_rtp_info will be called to determine if local or remote bridging can be used. Using remote bridging will cause a fax to fail, as direct media negotiation will cause some small number of packets to not arrive at the remote endpoint. This patch forces local native bridging if T.38 negotiation is in progress or has been established. git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@416318 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_sip.c b/channels/chan_sip.c index a9685b556a..7a3d93e36c 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -32649,6 +32649,19 @@ static enum ast_rtp_glue_result sip_get_rtp_peer(struct ast_channel *chan, struc res = AST_RTP_GLUE_RESULT_FORBID; } + if (ast_test_flag(&p->flags[1], SIP_PAGE2_T38SUPPORT)) { + switch (p->t38.state) { + case T38_LOCAL_REINVITE: + case T38_PEER_REINVITE: + case T38_ENABLED: + res = AST_RTP_GLUE_RESULT_LOCAL; + break; + case T38_REJECTED: + default: + break; + } + } + if (p->srtp) { res = AST_RTP_GLUE_RESULT_FORBID; }