<font size="2">Hi,<br>this is my call flow (from client side making the call: <a href="http://192.168.10.224">192.168.10.224</a>):<br><br>The INVITE received by <a href="http://192.168.0.167">192.168.0.167</a> (sent by <a href="http://192.168.10.224">
192.168.10.224</a> and processed by proxy) has SDP body with PRIVATE IP and PORT.<br><br>-----------------------------------------------------------------------------------<br><br><span style="font-weight: bold;"># <a href="http://192.162.10.224">
192.162.10.224</a> ----&gt; PROXY</span><br><br>Request-Line: INVITE sip:franco.callegati@PROXY_IP SIP/2.0<br>&nbsp;&nbsp;&nbsp; Message Header<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Via: SIP/2.0/UDP <a href="http://192.168.10.224:64244">192.168.10.224:64244</a>;branch=z9hG4bK-d87543-9947ff15e2520b54-1--d87543-
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Max-Forwards: 70<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Contact: &lt;sip:daniel.grotti@192.168.10.224:64244&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; To: &quot;franco.callegati&quot;&lt;sip:franco.callegati@PROXY_IP&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; From: &quot;casa&quot;&lt;sip:daniel.grotti@PROXY
_IP&gt;;tag=4554424c<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Call-ID: YjRmZjU3ODAwMjIxMDU0MDUwNDllYzUwNmZiYTJjMmE.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CSeq: 2 INVITE<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Content-Type: application/sdp
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Proxy-Authorization: Digest username=&quot;1000&quot;,realm=&quot;PROXY_IP&quot;,nonce=&quot;47593c9fa32034a66fdb7493ff499c7215d4d8db&quot;,uri=&quot;sip:franco.callegati@PROXY_IP&quot;,response=&quot;82d21af18029aa02388869088c3619d2&quot;,algorithm=MD5
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; User-Agent: X-Lite release 1011s stamp 41150<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Content-Length: 374<br>&nbsp;&nbsp;&nbsp; Message body<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Session Description Protocol<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Session Description Protocol Version (v): 0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Owner/Creator, Session Id (o): - 8 2 IN IP4 
<a href="http://192.168.10.224">192.168.10.224</a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Session Name (s): CounterPath X-Lite 3.0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Connection Information (c): IN IP4 <a href="http://192.168.10.224">192.168.10.224</a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Time Description, active time (t): 0 0
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Media Description, name and address (m): audio 53624 RTP/AVP 107 119 100 106 0 105 98 8 101<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Media Attribute (a): fmtp:101 0-15<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Media Attribute (a): rtpmap:107 BV32/16000<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Media Attribute (a): rtpmap:119 BV32-FEC/16000
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Media Attribute (a): rtpmap:100 SPEEX/16000<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Media Attribute (a): rtpmap:106 SPEEX-FEC/16000<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Media Attribute (a): rtpmap:105 SPEEX-FEC/8000<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Media Attribute (a): rtpmap:98 iLBC/8000
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Media Attribute (a): rtpmap:101 telephone-event/8000<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Media Attribute (a): sendrecv<br><br><span style="font-weight: bold;"># PROXY -----&gt; <a href="http://192.162.10.224">192.162.10.224</a>
</span><br><br>Status-Line: SIP/2.0 100 Trying<br>&nbsp;&nbsp;&nbsp; Message Header<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Via: SIP/2.0/UDP <a href="http://192.168.10.224:64244">192.168.10.224:64244</a>;branch=z9hG4bK-d87543-9947ff15e2520b54-1--d87543-;rport=28943;received=
<a href="http://85.18.14.25">85.18.14.25</a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; To: &quot;franco.callegati&quot;&lt;sip:franco.callegati@PROXY_IP&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; From: &quot;casa&quot;&lt;sip:daniel.grotti@PROXY_IP&gt;;tag=4554424c<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Call-ID: YjRmZjU3ODAwMjIxMDU0MDUwNDllYzUwNmZiYTJjMmE.
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CSeq: 2 INVITE<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Server: OpenSER (1.3.0-pre1-notls (i386/linux))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Content-Length: 0<br><br><span style="font-weight: bold;"># PROXY -----&gt; <a href="http://192.162.10.224">192.162.10.224</a>
</span><br><br>Status-Line: SIP/2.0 180 Ringing<br>&nbsp;&nbsp;&nbsp; Message Header<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Via: SIP/2.0/UDP <a href="http://192.168.10.224:64244">192.168.10.224:64244</a>;received=<a href="http://85.18.14.25">85.18.14.25</a>;branch=z9hG4bK-d87543-9947ff15e2520b54-1--d87543-;rport=28943
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Record-Route: &lt;sip:PROXY_IP:5060;lr;nat=yes;ftag=4554424c&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Contact: &lt;sip:franco.callegati@85.18.14.25:42214;rinstance=96888d44783df4a0&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; To: &quot;franco.callegati&quot;&lt;sip:
franco.callegati@PROXY_IP&gt;;tag=d06d8b2d<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; From: &quot;casa&quot;&lt;sip:daniel.grotti@PROXY_IP&gt;;tag=4554424c<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Call-ID: YjRmZjU3ODAwMjIxMDU0MDUwNDllYzUwNmZiYTJjMmE.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CSeq: 2 INVITE<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; User-Agent: X-Lite release 1011s stamp 41150
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Content-Length: 0<br><br><br><span style="font-weight: bold;"># PROXY -----&gt; <a href="http://192.162.10.224">192.162.10.224</a></span><br><br>Status-Line: SIP/2.0 200 OK<br>&nbsp;&nbsp;&nbsp; Message Header<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Via: SIP/2.0/UDP 
<a href="http://192.168.10.224:64244">192.168.10.224:64244</a>;received=<a href="http://85.18.14.25">85.18.14.25</a>;branch=z9hG4bK-d87543-9947ff15e2520b54-1--d87543-;rport=28943<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Record-Route: &lt;sip:PROXY_IP:5060;lr;nat=yes;ftag=4554424c&gt;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Contact: &lt;sip:franco.callegati@85.18.14.25:42214;rinstance=96888d44783df4a0&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; To: &quot;franco.callegati&quot;&lt;sip:franco.callegati@PROXY_IP&gt;;tag=d06d8b2d<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; From: &quot;casa&quot;&lt;sip:
daniel.grotti@PROXY_IP&gt;;tag=4554424c<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Call-ID: YjRmZjU3ODAwMjIxMDU0MDUwNDllYzUwNmZiYTJjMmE.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CSeq: 2 INVITE<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Content-Type: application/sdp<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; User-Agent: X-Lite release 1011s stamp 41150<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Content-Length: 372<br>&nbsp;&nbsp;&nbsp; Message body<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Session Description Protocol<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Session Description Protocol Version (v): 0
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Owner/Creator, Session Id (o): - 7 2 IN IP4 <a href="http://192.168.0.167">192.168.0.167</a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Session Name (s): CounterPath X-Lite 3.0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Connection Information (c): IN IP4 <a href="http://192.168.0.167">
192.168.0.167</a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Time Description, active time (t): 0 0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Media Description, name and address (m): audio 45566 RTP/AVP 107 119 100 106 0 105 98 8 101<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Media Attribute (a): fmtp:101 0-15
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Media Attribute (a): rtpmap:107 BV32/16000<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Media Attribute (a): rtpmap:119 BV32-FEC/16000<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Media Attribute (a): rtpmap:100 SPEEX/16000<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Media Attribute (a): rtpmap:106 SPEEX-FEC/16000
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Media Attribute (a): rtpmap:105 SPEEX-FEC/8000<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Media Attribute (a): rtpmap:98 iLBC/8000<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Media Attribute (a): rtpmap:101 telephone-event/8000<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Media Attribute (a): sendrecv
<br><br><span style="font-weight: bold;"><a href="http://192.162.10.224">192.162.10.224</a> ----&gt; PROXY<br><br></span>Request-Line: ACK sip:franco.callegati@85.18.14.25:42214;rinstance=96888d44783df4a0 SIP/2.0<br>&nbsp;&nbsp;&nbsp; Message Header
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Via: SIP/2.0/UDP <a href="http://192.168.10.224:64244">192.168.10.224:64244</a>;branch=z9hG4bK-d87543-66641951d8357408-1--d87543-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Max-Forwards: 70<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Route: &lt;sip:PROXY_IP:5060;lr;nat=yes;ftag=4554424c&gt;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Contact: &lt;sip:daniel.grotti@192.168.10.224:64244&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; To: &quot;franco.callegati&quot;&lt;sip:franco.callegati@PROXY_IP&gt;;tag=d06d8b2d<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; From: &quot;casa&quot;&lt;sip:daniel.grotti@PROXY
_IP&gt;;tag=4554424c<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Call-ID: YjRmZjU3ODAwMjIxMDU0MDUwNDllYzUwNmZiYTJjMmE.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CSeq: 2 ACK<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Proxy-Authorization: Digest username=&quot;1000&quot;,realm=&quot;PROXY_IP&quot;,nonce=&quot;47593c9fa32034a66fdb7493ff499c7215d4d8db&quot;,uri=&quot;sip:
franco.callegati@PROXY_IP&quot;,response=&quot;82d21af18029aa02388869088c3619d2&quot;,algorithm=MD5<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; User-Agent: X-Lite release 1011s stamp 41150<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Content-Length: 0<br><br><br><span style="font-weight: bold;">
RTP STREAM BETWEEN CLIENTS (MEDIAPROXY DOESN&#39;T WORK)<br><br><span style="font-weight: bold;">CALL ENDED</span><br></span><br>----------------------------------------------------------------------------------------------------------------------
<br><br>this is my config file:<br><br>debug=3<br>fork=yes<br>log_stderror=yes<br><br>listen=PROXY_IP<br>port=5060<br>children=4<br><br>dns=no<br>rev_dns=no<br>disable_dns_blacklist=yes<br><br>mpath=&quot;/usr/SER_proxy//lib/openser/modules/&quot;
<br><br>#------------------------------------------------------<br># Load Module<br>#------------------------------------------------------<br><br>loadmodule &quot;mysql.so&quot;<br>loadmodule &quot;auth.so&quot;<br>loadmodule &quot;auth_db.so&quot;
<br>loadmodule &quot;sl.so&quot;<br>loadmodule &quot;tm.so&quot;<br>loadmodule &quot;rr.so&quot;<br>loadmodule &quot;maxfwd.so&quot;<br>loadmodule &quot;usrloc.so&quot;<br>loadmodule &quot;registrar.so&quot;<br>loadmodule &quot;mi_fifo.so&quot;
<br>loadmodule &quot;uri.so&quot;<br>loadmodule &quot;uri_db.so&quot;<br>loadmodule &quot;domain.so&quot;<br>loadmodule &quot;mediaproxy.so&quot;<br>loadmodule &quot;nathelper.so&quot;<br>loadmodule &quot;textops.so&quot;
<br>loadmodule &quot;xlog.so&quot;<br>loadmodule &quot;cpl-c.so&quot;<br>loadmodule &quot;alias_db.so&quot;<br><br><br>#----------------------------------------------------------<br># Parameters<br>#----------------------------------------------------------
<br><br>modparam(&quot;auth_db|uri_db|usrloc|domain|alias_db&quot;, &quot;db_url&quot;, &quot;mysql://topenser:openserrw@localhost/topenser&quot;)<br><br>modparam(&quot;mi_fifo&quot;, &quot;fifo_name&quot;, &quot;/tmp/openser_fifo&quot;)
<br><br>modparam(&quot;auth_db&quot;, &quot;calculate_ha1&quot;, yes)<br>modparam(&quot;auth_db&quot;, &quot;password_column&quot;, &quot;password&quot;)<br><br>modparam(&quot;usrloc&quot;, &quot;db_mode&quot;, 2)<br>modparam(&quot;usrloc&quot;, &quot;nat_bflag&quot;, 6)
<br><br>modparam(&quot;rr&quot;, &quot;enable_full_lr&quot;, 1)<br><br>modparam(&quot;alias_db&quot;, &quot;use_domain&quot;, 1)<br><br># REGISTRAR MODULE<br>modparam(&quot;registrar&quot;, &quot;max_contacts&quot;, 2)&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # max number of contacts per URI
<br>modparam(&quot;registrar&quot;, &quot;append_branches&quot;, 0) &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # if 0: R-URI will be overwritten with the highest-q rated contact and the rest will be left unprocessed.<br>modparam(&quot;registrar&quot;, &quot;default_q&quot;, 1000) &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # default contacts q-value set as 1 
<br>modparam(&quot;registrar&quot;, &quot;received_avp&quot;,&quot;$avp(i:42)&quot;)<br><br># URI_DB MODULE<br>modparam(&quot;uri_db&quot;, &quot;use_uri_table&quot;, 1) &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # Specify if the &quot;uri&quot; table should be used for checkings instead of &quot;subscriber&quot; table
<br><br><br># CPL MODULE<br>modparam(&quot;cpl-c&quot;, &quot;db_url&quot;, &quot;mysql://topenser:openserrw@localhost/topenser&quot;)<br>modparam(&quot;cpl-c&quot;, &quot;cpl_table&quot;, &quot;cpl&quot;)<br>modparam(&quot;cpl-c&quot;, &quot;cpl_dtd_file&quot;, &quot;/usr/src/openser-
1.2.2-notls/modules/cpl-c/cpl-06.dtd&quot;)<br>modparam(&quot;cpl-c&quot;, &quot;lookup_domain&quot;, &quot;location&quot;)<br>modparam(&quot;cpl-c&quot;,&quot;lookup_append_branches&quot;,1)<br>modparam(&quot;cpl-c&quot;,&quot;proxy_route&quot;, 10)
<br><br>#NATHELPER MODULE<br>modparam(&quot;nathelper&quot;, &quot;rtpproxy_disable_tout&quot;, 120)<br>modparam(&quot;nathelper&quot;, &quot;rtpproxy_tout&quot;, 2)<br>modparam(&quot;nathelper&quot;, &quot;natping_interval&quot;, 30)
<br>modparam(&quot;nathelper&quot;, &quot;ping_nated_only&quot;, 1)<br>modparam(&quot;nathelper&quot;, &quot;received_avp&quot;, &quot;$avp(i:42)&quot;)<br>modparam(&quot;nathelper&quot;, &quot;sipping_method&quot;, &quot;OPTIONS&quot;)&nbsp;&nbsp;&nbsp;&nbsp; # Use OPTIONS every 10sec to keep NAT alive
<br>modparam(&quot;nathelper&quot;, &quot;sipping_bflag&quot;, 6)<br>modparam(&quot;nathelper&quot;, &quot;sipping_from&quot;, &quot;sip:PROXY_IP&quot;)<br><br>#MEDIAPROXY MODULE<br>modparam(&quot;mediaproxy&quot;, &quot;mediaproxy_socket&quot;, &quot;/var/run/mediaproxy.sock&quot;)
<br>modparam(&quot;mediaproxy&quot;, &quot;sip_asymmetrics&quot;, &quot;/usr/local/etc/openser/sip-asymmetric-clients&quot;)<br>modparam(&quot;mediaproxy&quot;, &quot;rtp_asymmetrics&quot;, &quot;/usr/local/etc/openser/rtp-asymmetric-clients&quot;)
<br><br># TM MODULE<br>modparam(&quot;tm&quot;, &quot;fr_inv_timer&quot;, 120)<br><br><br>#------------------------------------------------------------<br>#MAIN ROUTE<br>#-----------------------------------------------------------
<br><br>route {<br>&nbsp;&nbsp;&nbsp; xlog(&quot;L_DBG&quot;, &quot;INFO: NEW REQUEST - METHOD=$rm R-URI=$ru FROM=$fu TO=$tu IP=$si ID=$ci\n&quot;);<br>#------------------------------------<br># Sanity checks<br>#------------------------------------
<br>&nbsp;&nbsp;&nbsp; if (!mf_process_maxfwd_header(&quot;10&quot;)) <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { sl_send_reply(&quot;483&quot;, &quot;Too much Hops&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; exit;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; if (msg:len &gt;= 2048)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { sl_send_reply(&quot;513&quot;, &quot;Message too big&quot;);
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; exit;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br>#------------------------------------<br># RECORD-ROUTE<br>#------------------------------------&nbsp;&nbsp;&nbsp; <br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(method==&quot;INVITE&quot;&nbsp; &amp;&amp; client_nat_test(&quot;7&quot;))
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; record_route_preset (&quot;PROXY_IP:5060;nat=yes&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlog(&quot;L_DBG&quot;, &quot;INFO: RECORD-ROUTE WITH NAT&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (method!=&quot;REGISTER&quot;)
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; record_route();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br><br>#----------------------------------------<br># CALL TEAR DOWN<br>#----------------------------------------&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; if (method==&quot;BYE&quot;)&nbsp; 
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; end_media_session();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp; if (method==&quot;CANCEL&quot;)&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;end_media_session();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp; <br>#--------------------------------------------
<br># LOOSE ROUTE<br>#--------------------------------------------&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; if (loose_route())<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; xlog(&quot;L_DBG&quot;, &quot;INFO: LOOSE ROUTE&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; if (method==&quot;INVITE&quot;)
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (!proxy_authorize(&quot;&quot;,&quot;subscriber&quot;))<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; {&nbsp; proxy_challenge(&quot;&quot;,&quot;0&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;else if (!check_from())
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; {&nbsp; sl_send_reply(&quot;403&quot;,&quot;Unauthorized&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;consume_credentials();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if (client_nat_test(&quot;7&quot;) || search(&quot;^Route:.*nat=yes&quot;))
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; {&nbsp; setbflag(7);&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; use_media_proxy();&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; route(1);<br>&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br>#-------------------------------------------------&nbsp;&nbsp;&nbsp; 
<br>#CALL TYPE PROCESSING<br>#-------------------------------------------------<br>&nbsp;&nbsp;&nbsp; if (!uri==myself)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { route(1);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; exit;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br><br>&nbsp;&nbsp;&nbsp; if (uri==myself)&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; if (method==&quot;REGISTER&quot;)
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { xlog(&quot;L_DBG&quot;, &quot;INFO: REGISTER Message received&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; route(2);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; exit;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; if (method==&quot;ACK&quot;)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { route(1);
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; exit;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; if (method==&quot;INVITE&quot;)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { <br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; xlog(&quot;L_DBG&quot;, &quot;INFO: INVITE Message received&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; route(3);
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; exit;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; if (method==&quot;MESSAGE&quot;)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; xlog(&quot;L_DBG&quot;, &quot;INFO: MESSAGE method received&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; route(4);<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; exit;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; lookup(&quot;aliases&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; if (!uri==myself)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { route(1);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; exit;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; if (!lookup(&quot;location&quot;))
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { sl_send_reply(&quot;404&quot;, &quot;Destination not found&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; exit;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br><br>&nbsp;&nbsp;&nbsp; route(1);<br>}<br><br>#--------------------------------------------------------
<br># REGISTER PROCESSING <br>#--------------------------------------------------------<br>route[2]<br>{<br># Check credentials<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; if(!www_authorize(&quot;&quot;,&quot;subscriber&quot;))<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp; www_challenge(&quot;&quot;,&quot;0&quot;);
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; else if(!check_to())<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp; sl_send_reply(&quot;401&quot;, &quot;Unauthorized&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br><br>&nbsp;&nbsp;&nbsp; consume_credentials();<br><br># Check client natted - if yes, set flag 6&nbsp;&nbsp;&nbsp; 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!search(&quot;^Contact:[ ]*\*&quot;) &amp;&amp; client_nat_test(&quot;7&quot;))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setbflag(6); <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; xlog(&quot;L_DBG&quot;,&quot;INFO: Registration behind NAT&quot;);&nbsp;&nbsp;&nbsp; 
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; xlog(&quot;L_DBG&quot;,&quot;INFO: Bflag 6, related to BRANCH=$T_branch_idx, is setted as $bf&quot;);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fix_nated_register();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; force_rport();&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };
<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; if(!save(&quot;location&quot;))<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { sl_reply_error();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; xlog(&quot;L_DBG&quot;, &quot;Registration of [$fU] Failed&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; xlog(&quot;L_DBG&quot;, &quot;INFO: Registration of [$fU] Complete.&quot;); 
<br>&nbsp;&nbsp;&nbsp; xlog(&quot;L_DBG&quot;, &quot;INFO: 200 OK has been sended&quot;);<br>}&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>#----------------------------------------------------------<br># INVITE PROCESSING <br>#----------------------------------------------------------
<br>route[3]<br>{<br>&nbsp;&nbsp;&nbsp; sl_send_reply(&quot;100&quot;, &quot;Trying&quot;);<br># Check if caller is natted, if yes set flag 7, rewrite Contact HF with Proxy address&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; if(client_nat_test(&quot;7&quot;))&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; setbflag(7);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; xlog(&quot;L_DBG&quot;, &quot;INFO: CLIENT INVITE BEHIND NAT&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; xlog(&quot;L_DBG&quot;,&quot;NOTICE: Bflag 7, related to BRANCH=$T_branch_idx of this INVITE, is setted as $bf&quot;);
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; if(force_rport())<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; xlog(&quot;L_DBG&quot;,&quot;INFO: rport FORCED&quot;);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; if(fix_nated_contact())<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; xlog(&quot;L_DBG&quot;,&quot;INFO: Contact HF is now [$ct]&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; # append_hf(&quot;P-hint: INVITE behind NAT \n&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br># Check Credentials<br><br>&nbsp;&nbsp;&nbsp; if(!proxy_authorize(&quot;&quot;,&quot;subscriber&quot;))
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { proxy_challenge(&quot;&quot;,&quot;0&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; exit;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; else if (!check_from())<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { sl_send_reply(&quot;403&quot;, &quot;Unauthorized&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; exit;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };
<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; lookup(&quot;aliases&quot;);<br>&nbsp;&nbsp;&nbsp; if(uri!=myself)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { route(1);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; exit;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br><br>&nbsp;&nbsp;&nbsp; consume_credentials();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br># Check if r-URI is an alias. If yes, rewrite RURI with User&#39;s URI
<br>&nbsp;&nbsp;&nbsp; if(!alias_db_lookup(&quot;dbaliases&quot;))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlog(&quot;L_DBG&quot;, &quot;The [$ru] is not an alias&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br>&nbsp;<br># Use Caller CPL &quot;Outgoing&quot; Script, if exist
<br><br>&nbsp;&nbsp;&nbsp; if(!cpl_run_script(&quot;outgoing&quot;, &quot;force_stateful&quot;))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sl_send_reply(&quot;500&quot;,&quot;Outgoing CPL script execution failed&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; exit;&nbsp;&nbsp;&nbsp; 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br># Find destination user and re-write R-URI with its Contact <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;if (!lookup(&quot;location&quot;))<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { sl_send_reply(&quot;404&quot;, &quot;Destination not found&quot;);
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; exit;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; xlog(&quot;L_DBG&quot;, &quot;INFO: LOCATION HAS BEEN FOUND&quot;);<br>&nbsp;&nbsp;&nbsp; xlog(&quot;L_DBG&quot;,&quot;INFO: R-URI&nbsp; is now [$ru]&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; t_on_reply(&quot;1&quot;);
<br><br># Use CPL &quot;Incoming&quot; script of the destination client<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!cpl_run_script(&quot;incoming&quot;,&quot;force_stateful&quot;))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sl_send_reply(&quot;500&quot;, &quot;Incoming CPL script execution failed&quot;);
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp; route(11);<br>&nbsp;&nbsp;&nbsp; route(1);<br>}<br><br><br># --------------------------------<br># PROXY ROUTE - CPL SCRIPT LOADED<br># --------------------------------<br>route[10]
<br>{<br>&nbsp;&nbsp;&nbsp; xlog(&quot;L_DBG&quot;, &quot;INFO: ROUTE 10 - PROXY ROUTE \n&quot;);<br>#&nbsp;&nbsp;&nbsp; append_hf(&quot;P-hint: CPL ROUTE 10 - PROXY-ROUTE\n&quot;);<br>&nbsp;&nbsp;&nbsp; if (isbflagset(6) || isbflagset(7))<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; xlog(&quot;L_DBG&quot;, &quot;INFO: flag 6 or 7 setted \n&quot;);&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; if(!isbflagset(8))&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; setbflag(8);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(use_media_proxy())<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; xlog(&quot;L_DBG&quot;,&quot;NOTICE: MEDIAPROXY in use for the CALLER!!&quot;);
<br>#&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; append_hf(&quot;P-hint: Mediaproxy in USE for the Caller\n&quot;);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br>}<br># -----------------------------<br># CONTROL FLAG - NO CPL SCRIPT<br># -----------------------------
<br>route[11]<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlog(&quot;L_DBG&quot;, &quot;INFO: ROUTE 11 - NO CPL SCRIPT&quot;);<br>#&nbsp;&nbsp;&nbsp; append_hf(&quot;P-hint: ROUTE 11 \n&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(isbflagset(6) || isbflagset(7))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlog(&quot;L_DBG&quot;, &quot;INFO: flag 6 or 7 setted&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!isbflagset(8))<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; setbflag(8);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; }; &nbsp;&nbsp;&nbsp; &nbsp;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(use_media_proxy())
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; xlog(&quot;L_DBG&quot;,&quot;NOTICE: mediaproxy in use for the caller!!&quot;);<br>#&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; append_hf(&quot;P-hint: MEDIAPROXY in USE for the CALLER\n&quot;);&nbsp;&nbsp;&nbsp; 
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br>}<br><br># --------------------------------------------------<br># MESSAGE PROCESSING<br># --------------------------------------------------<br>route[4]<br>{<br>&nbsp;&nbsp;&nbsp; &nbsp;if (uri!=myself)
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { sl_send_reply (&quot;403&quot;, &quot;Forbidden&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp; &nbsp;if (!lookup(&quot;location&quot;))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { sl_send_reply(&quot;404&quot;, &quot;Destination not found&quot;);
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp; route(1);<br>}<br><br>#----------------------------------------------------<br># RELEY ROUTE<br>#----------------------------------------------------<br>route[1]<br>
{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!t_relay(&quot;0x01&quot;)) &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # don&#39;t send 100 trying<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; if (method==&quot;INVITE&quot; || method==&quot;ACK&quot;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end_media_session();
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlog(&quot;L_DBG&quot;,&quot;INFO: MEDIA SESSION ENDED&quot;);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sl_reply_error();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlog(&quot;L_DBG&quot;, &quot;INFO: SENT ERROR REPLY&quot;);
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br>}<br><br>#---------------------------------------------------------------------<br># On Reply Route<br>#---------------------------------------------------------------------<br><br>onreply_route[1]
<br>{<br>&nbsp;&nbsp;&nbsp; xlog(&quot;L_DBG&quot;,&quot;INFO : ONREPLY ROUTE&quot;);<br>#&nbsp;&nbsp;&nbsp; append_hf(&quot;P-hint: ONREPLY ROUTE \n&quot;);<br>&nbsp;&nbsp;&nbsp; if (status=~&quot;(180)|(183)|2[0-9][0-9]&quot;)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; if (isbflagset(8) &amp;&amp; !search(&quot;^Content-Lenght:[ ]*0&quot;))
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; if(use_media_proxy())<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlog(&quot;L_DBG&quot;,&quot;INFO: MEDIAPROXY in use for the CALLED!&quot;);<br>#&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; append_hf(&quot;P-hint: Media Proxy in use for the Callee!\n&quot;);&nbsp;&nbsp;&nbsp; 
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp; if (client_nat_test(&quot;7&quot;) &amp;&amp; status=~&quot;(180)|(183)|(200)&quot;)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; fix_nated_contact();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; xlog(&quot;L_DBG&quot;,&quot;INFO: CONTACT HF has been CHANGED&quot;);<br>#&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; append_hf(&quot;P-hint: CALLEE&#39;S CONTACT HF has benn CHANGED\n&quot;);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br>}<br><br>---------------------------------------------------------------------------------------------------------------------- 
<br><br><br><br><br>Regards,<br>Daniel<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>Hi Daniel,<br>
<br>
Can u post your openser configuration as well as a complete ngrep<br>
trace for the calls you have problems with?<br>
<br>
DanB<br><br><br clear="all"></font><br>-- <br>Daniel Grotti<br>________________________<br>e-mail : <a href="mailto:d.grotti@gmail.com">d.grotti@gmail.com</a>