Hi,<div>I&#39;m working with asterisk 1.4.35 and found an issue regarding codecs negotiation when T38 is enabled (t38pt_udptl=yes).</div><div>In particular if the INVITE sdp contains no allowed codec the call is not rejected with &quot;488 - Not acceptable here&quot; but it goes through and the 200 OK SDP is as follows:</div>
<div><br></div><div><div>v=0</div><div>o=root 27285 27285 IN IP4 xxx.xxx.xxx.xxx</div><div>s=session</div><div>c=IN IP4 xxx.xxx.xxx.xxx</div><div>t=0 0</div><div>m=audio xxxxx RTP/AVP </div><div>a=silenceSupp:off - - - -</div>
<div>a=sendrecv</div><div><br></div><div>or</div><div><br></div><div><div>v=0</div><div>o=root 27285 27285 IN IP4 xxx.xxx.xxx.xxx</div><div>s=session</div><div>c=IN IP4 xxx.xxx.xxx.xxx</div><div>t=0 0</div><div>m=audio xxxxx RTP/AVP 96</div>
<div>a=rtpmap:96 telephone-event/8000</div><div>a=fmtp:96 0-15</div><div>a=silenceSupp:off - - - -</div><div>a=sendrecv</div><div><br></div><div>if in the originating INVITE there was the a line for telephone-event mapping.</div>
<div>Looking chan_sip.c I understood that the problem is related to t38 capabilities and in particular at row 5636:</div><div><div><br></div><div>if (!newjointcapability) {</div><div>        /* If T.38 was not negotiated either, totally bail out... */</div>
<div>        if (!p-&gt;t38.jointcapability || !udptlportno) {</div><div>                ast_log(LOG_NOTICE, &quot;No compatible codecs, not accepting this offer!\n&quot;);</div><div>                /* Do NOT Change current setting */</div>
<div>                return -1;</div><div>        } else {</div><div>                if (option_debug &gt; 2)</div><div>                        ast_log(LOG_DEBUG, &quot;Have T.38 but no audio codecs, accepting offer anyway\n&quot;);</div>
<div>        }</div><div> }</div><div><br></div><div>As I understand if t38 is globally enabled p-&gt;t38.jointcapability and udptlportno are always true even so the call is never rejected.</div><div>As this behavior caused me some problems with a customer I modified, for the moment, the line 5638 as follows:</div>
<div><br></div><div>if (!p-&gt;t38.jointcapability || !udptlportno || p-&gt;t38.state == T38_DISABLED)</div><div><br></div><div>cause if I understand well the code if there is no fax request in the INVITE SDP p-&gt;t38.state is set to T38_DISABLED.</div>
<div>This did the trick for me but I don&#39;t know the implications of such change and if it is correct to manage it this way.</div><div><br></div><div>Kind regards,</div><div><br></div><div>Federico Cabiddu</div><div><br>
</div></div></div></div>