<div dir="ltr">First of all thanks for your quick response.<div><br></div><div>At the moment this is the point where we have the t_on_reply for that onreply_route I sent in the previous email.</div><div><br></div><div><div>route[1] {</div><div><span class="" style="white-space:pre">        </span>if(!cache_fetch(&quot;local&quot;, &quot;outerip_$var(destinationIp)&quot;, $avp(outerIp))) {</div><div><span class="" style="white-space:pre">                </span>get_outer_ip(&quot;$var(destinationIp)&quot;, &quot;$avp(outerIp)&quot;);</div><div><span class="" style="white-space:pre">                </span>cache_store(&quot;local&quot;, &quot;outerip_$var(destinationIp)&quot;, &quot;$avp(outerIp)&quot;, 10);</div><div><span class="" style="white-space:pre">        </span>}</div><div><br></div><div><span class="" style="white-space:pre">        </span>$fs = $proto + &quot;:&quot; + $avp(outerIp);</div><div><br></div><div><span class="" style="white-space:pre">        </span>if (is_method(&quot;BYE|CANCEL&quot;)) {</div><div><span class="" style="white-space:pre">                </span>unforce_rtp_proxy();</div><div><span class="" style="white-space:pre">        </span>} else if (is_method(&quot;INVITE&quot;)){</div><div><span class="" style="white-space:pre">                </span>if (has_body(&quot;application/sdp&quot;)) {</div><div><span class="" style="white-space:pre">                        </span>$var(trustconnectionip) = &quot;%TRUSTCONNECTIONIP%&quot;;</div><div><span class="" style="white-space:pre">                        </span>$var(ciptrusted) = &quot;no&quot;;</div><div><span class="" style="white-space:pre">                        </span>if ($var(trustconnectionip)==&quot;yes&quot;) {</div><div><span class="" style="white-space:pre">                                </span>$var(ciptrusted) = &quot;yes&quot;;</div><div><span class="" style="white-space:pre">                        </span>} else if ($var(trustconnectionip)==&quot;auto&quot;) {</div><div><span class="" style="white-space:pre">                                </span>$var(sdpc) = $(rb{sdp.line,c}{s.substr,9,0});</div><div><span class="" style="white-space:pre">                                </span>if($td == $fd &amp;&amp; $td != $var(sdpc)) {</div><div><span class="" style="white-space:pre">                                        </span>$var(ciptrusted) = &quot;yes&quot;;</div><div><span class="" style="white-space:pre">                                </span>}</div><div><span class="" style="white-space:pre">                        </span>}</div><div><span class="" style="white-space:pre">                        </span>if ($var(ciptrusted)==&quot;yes&quot;) {</div><div><span class="" style="white-space:pre">                                </span>rtpproxy_offer(&quot;focnr&quot;);</div><div><span class="" style="white-space:pre">                        </span>} else {</div><div><span class="" style="white-space:pre">                                        </span>rtpproxy_offer(&quot;focn&quot;);</div><div><span class="" style="white-space:pre">                </span></div><div><span class="" style="white-space:pre">                        </span>}</div><div><span class="" style="white-space:pre">                </span>}</div><div><span class="" style="white-space:pre">        </span>}</div><div><br></div><div><span class="" style="white-space:pre">        </span># Prevent $var(destinationPort) from getting default port number 5060 for TLS if no port specified in R-URI.</div><div><span class="" style="white-space:pre">        </span>if($(ru{uri.port})==&quot;&quot; &amp;&amp; $proto==&quot;tls&quot; &amp;&amp; $var(destinationPort)==&quot;5060&quot;) {</div><div><span class="" style="white-space:pre">                </span>$var(destinationPort) = 5061;</div><div><span class="" style="white-space:pre">        </span>}</div><div><br></div><div><span class="" style="white-space:pre">        </span># force the transport protocol to the same one the client used</div><div><span class="" style="white-space:pre">        </span>$du = &quot;sip:&quot;+$var(destinationIp)+&quot;:&quot;+$var(destinationPort)+&quot;;transport=&quot;+$proto;</div><div><br></div><div><span class="" style="white-space:pre">        </span>t_on_reply(&quot;1&quot;);</div><div><br></div><div><span class="" style="white-space:pre">        </span># for INVITEs enable some additional helper routes</div><div><span class="" style="white-space:pre">        </span>if (is_method(&quot;INVITE&quot;)) {</div><div><span class="" style="white-space:pre">                </span>t_on_failure(&quot;1&quot;);</div><div><span class="" style="white-space:pre">        </span>}</div><div><br></div><div><span class="" style="white-space:pre">        </span>if (!t_relay()) {</div><div><span class="" style="white-space:pre">                </span>xlog(&quot;L_INFO&quot;, &quot;Relay error&quot;);</div><div><span class="" style="white-space:pre">                </span>sl_reply_error();</div><div><span class="" style="white-space:pre">        </span>}</div><div><span class="" style="white-space:pre">        </span>exit;</div><div>}</div></div><div><br></div><div>The route[1] is set in the main route under this conditions</div><div><br></div><div><div>if (has_totag()) {</div><div><span class="" style="white-space:pre">                </span># sequential request within a dialog should</div><div><span class="" style="white-space:pre">                </span># take the path determined by record-routing</div><div><span class="" style="white-space:pre">                </span>if (loose_route()) {</div><div><span class="" style="white-space:pre">                        </span>$var(destinationIp) = $avp(requestIp);</div><div><span class="" style="white-space:pre">                        </span>$var(destinationPort) = $rp;</div><div><br></div><div><span class="" style="white-space:pre">                        </span>if (is_method(&quot;INVITE&quot;)) {</div><div><span class="" style="white-space:pre">                                </span># even if in most of the cases is useless, do RR for</div><div><span class="" style="white-space:pre">                                </span># re-INVITEs alos, as some buggy clients do change route set</div><div><span class="" style="white-space:pre">                                </span># during the dialog.</div><div><span class="" style="white-space:pre">                                </span>record_route();</div><div><span class="" style="white-space:pre">                        </span>}</div><div><span class="" style="white-space:pre">                        </span># route it out to whatever destination was set by loose_route()</div><div><span class="" style="white-space:pre">                        </span># in $du (destination URI).</div><div><span class="" style="white-space:pre">                        </span>route(1);</div></div><div>...</div><div>       exit;</div><div>}</div><div>....</div><div><br></div><div>And if there is no REGISTER, PUBLISH, CANCEL</div><div><br></div><div>route(1);</div><div>}</div><div><br></div><div>About the engage_rtp_proxy I was actually thinking about it but I&#39;m a bit scared because of the bridge mode, as it is a &quot;generic&quot; script, I need to identify all this cases and create configuration cases to make scripts automatically for those setups. </div><div><br></div><div>Srly, thanks for the response &gt;.&lt; I have only 1 week experience with this protocol and I&#39;m having nightmares already.</div><div><br></div><div>Kind regards</div><div>Jose Palma</div><div class="gmail_extra"><br><div class="gmail_quote">2015-09-30 16:51 GMT+02:00 Trevor Steyn <span dir="ltr">&lt;<a href="mailto:trevor@webon.co.za" target="_blank">trevor@webon.co.za</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
  
    
  
  <div text="#000000" bgcolor="#FFFFFF">
    HI Raistlin, <br>
    <br>
    from your script we cannot see where you are setting t_on_reply
    routes as im sure this is where you are probably missing the
    rtpproxy_answer() but cannot see why as that part of the script is
    missing<br>
    <br>
    <br>
    maybe you can also try use engage_rtp_proxy() and you wont have to
    worry about the answer and you could remove the reply routes and
    just relay <br>
    <br>
    <div><span style="white-space:pre-wrap"> </span>if
      ($var(ciptrusted)==&quot;yes&quot;) {</div>
    <div><span style="white-space:pre-wrap"> </span>engage_rtp_proxy(&quot;focnr&quot;);</div>
    <div><span style="white-space:pre-wrap"> </span>} else {</div>
    <div><span style="white-space:pre-wrap"> </span>engage_rtpproxy(&quot;focn&quot;);</div>
    <div><span style="white-space:pre-wrap"> </span>}<br>
      <br>
      Regards<br>
      Trevor Steyn<br>
      <br>
    </div><div><div class="h5">
    <br>
    <br>
     <br>
    <br>
    <div>On 30/09/2015 14:56, Raistlin Majere
      wrote:<br>
    </div>
    </div></div><blockquote type="cite"><div><div class="h5">
      <div dir="ltr">Hi,
        <div><br>
        </div>
        <div>Recently the maintainer of the SIPs proxy in our company
          quit, and well I&#39;m the new in charge of this project, the bad
          new is I had 0 experience with SIP.  After some week I got my
          first case related to our &quot;SIP proxy&quot;.</div>
        <div><br>
        </div>
        <div>We are using OpenSIP 1.8 within our Firewall to handle the
          protocol and the NAT that it will imply within a Firewall. The
          script my ex coworker did is working in 99% of cases but this
          specific case. </div>
        <div><br>
        </div>
        <div>The customer has one setup like this</div>
        <div><br>
        </div>
        <div><br>
        </div>
        <div>PhoneA</div>
        <div>PhoneB</div>
        <div>PhoneC --- Call Manager --- Firewall --- SBC --- Farm of
          RTP Media servers</div>
        <div>....</div>
        <div>PhoneN</div>
        <div><br>
        </div>
        <div>The opensips instance is running within the firewall. The
          next IPs are fake but follow the &quot;rules&quot; of internal/external
          it is just to avoid problems</div>
        <div><br>
        </div>
        <div>Call Manager: 172.17.1.1</div>
        <div>Firewall: Internal Network 192.168.0.10</div>
        <div>Firewall: Extenal Network 62.1.1.10</div>
        <div>SBC: 210.200.100.100</div>
        <div>Farm of Media Servers: <a href="http://210.200.100.128/25" target="_blank">210.200.100.128/25</a></div>
        <div><br>
        </div>
        <div>So the invite works as Expected but on the 180 Ringing
          either 200 OK the moment the messages traverse the SIP proxy,
          doesn&#39;t contain the &quot;farm&quot; IP but the SBC IP.</div>
        <div><br>
        </div>
        <div>This are the 180 Ringing:</div>
        <div><br>
        </div>
        <div>From SBC to the Firewall</div>
        <div><br>
        </div>
        <div>
          <div>SIP/2.0 180 Ringing</div>
          <div>Via:
            SIP/2.0/UDP 62.1.1.10:5060;branch=z9hG4bKd091.937a047.0</div>
          <div>Via:
SIP/2.0/UDP 172.17.1.1:5060;rport=5060;received=172.17.1.1;branch=z9hG4bKac393424402</div>
          <div>From: &lt;<a href="mailto:sip%3A5000@210.200.100.100" target="_blank">sip:5000@210.200.100.100</a>&gt;;tag=1c393411873</div>
          <div>To: &lt;<a href="mailto:sip%3A5001@210.200.100.100" target="_blank">sip:5001@210.200.100.100</a>;user=phone&gt;;tag=gK08c71cc5</div>
          <div>Call-ID: <a href="mailto:39341083229920151062@172.17.1.1" target="_blank">39341083229920151062@172.17.1.1</a></div>
          <div>CSeq: 1 INVITE</div>
          <div>Record-Route:
            &lt;sip:62.1.1.10:5060;r2=on;lr;did=6d8.933abaa6&gt;</div>
          <div>Record-Route:
            &lt;sip:192.168.0.10:5060;r2=on;lr;did=6d8.933abaa6&gt;</div>
          <div>Contact: &lt;<a href="http://sip:5001@210.200.100.100:5060" target="_blank">sip:5001@210.200.100.100:5060</a>&gt;</div>
          <div>Allow:
INVITE,ACK,CANCEL,BYE,REGISTER,REFER,INFO,SUBSCRIBE,NOTIFY,PRACK,UPDATE,OPTIONS,MESSAGE,PUBLISH</div>
          <div>Require: 100rel</div>
          <div>RSeq: 433990</div>
          <div>Content-Length:   266</div>
          <div>Content-Disposition: session; handling=required</div>
          <div>Content-Type: application/sdp</div>
          <div><br>
          </div>
          <div>v=0</div>
          <div>o=Sonus_UAC 176482 50736 IN IP4 210.200.100.100</div>
          <div>s=SIP Media Capabilities</div>
          <div>c=IN IP4 210.200.100.243</div>
          <div>t=0 0</div>
          <div>m=audio 61348 RTP/AVP 8 101</div>
          <div>a=rtpmap:8 PCMA/8000</div>
          <div>a=rtpmap:101 telephone-event/8000</div>
          <div>a=fmtp:101 0-15</div>
          <div>a=sendrecv</div>
          <div>a=ptime:20</div>
          <div>a=silenceSupp:off - - - -</div>
        </div>
        <div><br>
        </div>
        <div>After the firewall + Opensips have processed this message
          to the call center</div>
        <div><br>
        </div>
        <div>
          <div>SIP/2.0 180 Ringing</div>
          <div>Via:
            SIP/2.0/UDP 172.17.1.1:5060;branch=z9hG4bKac393424402</div>
          <div>From: &lt;<a href="mailto:sip%3A5000@210.200.100.100" target="_blank">sip:5000@210.200.100.100</a>&gt;;tag=1c393411873</div>
          <div>To: &lt;<a href="mailto:sip%3A5001@210.200.100.100" target="_blank">sip:5001@210.200.100.100</a>;user=phone&gt;;tag=gK08c71cc5</div>
          <div>Call-ID: <a href="mailto:39341083229920151062@172.17.1.1" target="_blank">39341083229920151062@172.17.1.1</a></div>
          <div>CSeq: 1 INVITE</div>
          <div>Record-Route:
            &lt;sip::62.1.1.10:5060;r2=on;lr;did=6d8.933abaa6&gt;</div>
          <div>Record-Route:
            &lt;sip:192.168.0.10:5060;r2=on;lr;did=6d8.933abaa6&gt;</div>
          <div>Contact: &lt;<a href="mailto:sip%3A5001@210.200.100.100" target="_blank">sip:5001@210.200.100.100</a>&gt;</div>
          <div>Allow:
INVITE,ACK,CANCEL,BYE,REGISTER,REFER,INFO,SUBSCRIBE,NOTIFY,PRACK,UPDATE,OPTIONS,MESSAGE,PUBLISH</div>
          <div>Require: 100rel</div>
          <div>RSeq: 433990</div>
          <div>Content-Length: 295</div>
          <div>Content-Disposition: session; handling=required</div>
          <div>Content-Type: application/sdp</div>
          <div><br>
          </div>
          <div>v=0</div>
          <div>o=Sonus_UAC 176482 50736 IN IP4 210.200.100.100</div>
          <div>s=SIP Media Capabilities</div>
          <div>t=0 0</div>
          <div>m=audio 4845 RTP/AVP 8 101</div>
          <div>a=rtpmap:8 PCMA/8000</div>
          <div>a=rtpmap:101 telephone-event/8000</div>
          <div>a=fmtp:101 0-15</div>
          <div>a=sendrecv</div>
          <div>a=ptime:20</div>
          <div>a=silenceSupp:off - - - -</div>
          <div>a=nortpproxy:yes</div>
          <div>c=IN IP4 210.200.100.100</div>
          <div>a=rtcp:4848</div>
        </div>
        <div><br>
        </div>
        <div>----</div>
        <div><br>
        </div>
        <div>The RTP &quot;acceptor&quot; is created under the IP 210.200.100.100
          instead of the IP 210.200.243 as the SIPproxy is changing the
          SDP connection information.</div>
        <div><br>
        </div>
        <div><br>
        </div>
        <div>This is the logic we are using in our script for the INVITE
          and for the onreply_route</div>
        <div><br>
        </div>
        <div>
          <div><span style="white-space:pre-wrap"> </span>if
            (is_method(&quot;INVITE&quot;)){</div>
          <div><span style="white-space:pre-wrap"> </span>if
            (has_body(&quot;application/sdp&quot;)) {</div>
          <div><span style="white-space:pre-wrap"> </span>$var(trustconnectionip)
            = &quot;%TRUSTCONNECTIONIP%&quot;;</div>
          <div><span style="white-space:pre-wrap"> </span>$var(ciptrusted)
            = &quot;no&quot;;</div>
          <div><span style="white-space:pre-wrap"> </span>if
            ($var(trustconnectionip)==&quot;yes&quot;) {</div>
          <div><span style="white-space:pre-wrap"> </span>$var(ciptrusted)
            = &quot;yes&quot;;</div>
          <div><span style="white-space:pre-wrap"> </span>} else if
            ($var(trustconnectionip)==&quot;auto&quot;) {</div>
          <div><span style="white-space:pre-wrap"> </span>$var(sdpc)
            = $(rb{sdp.line,c}{s.substr,9,0});</div>
          <div><span style="white-space:pre-wrap"> </span>if($td ==
            $fd &amp;&amp; $td != $var(sdpc)) {</div>
          <div><span style="white-space:pre-wrap"> </span>$var(ciptrusted)
            = &quot;yes&quot;;</div>
          <div><span style="white-space:pre-wrap"> </span>}</div>
          <div><span style="white-space:pre-wrap"> </span>}</div>
          <div><span style="white-space:pre-wrap"> </span>if
            ($var(ciptrusted)==&quot;yes&quot;) {</div>
          <div><span style="white-space:pre-wrap"> </span>rtpproxy_offer(&quot;focnr&quot;);</div>
          <div><span style="white-space:pre-wrap"> </span>} else {</div>
          <div><span style="white-space:pre-wrap"> </span>rtpproxy_offer(&quot;focn&quot;);</div>
          <div><span style="white-space:pre-wrap"> </span>}</div>
          <div><span style="white-space:pre-wrap"> </span>}</div>
        </div>
        <div><span style="white-space:pre-wrap"> }</span><br>
        </div>
        <div><span style="white-space:pre-wrap"><br>
          </span></div>
        <div><span style="white-space:pre-wrap"><br>
          </span></div>
        <div><span style="white-space:pre-wrap"><br>
          </span></div>
        <div><span style="white-space:pre-wrap">And on the onreply</span></div>
        <div><span style="white-space:pre-wrap"><br>
          </span></div>
        <div><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">if (has_body(&quot;application/sdp&quot;)) {
            $var(trustconnectionip) = &quot;%TRUSTCONNECTIONIP%&quot;;
            $var(ciptrusted) = &quot;no&quot;; if ($var(trustconnectionip)==&quot;yes&quot;)
            { $var(ciptrusted) = &quot;yes&quot;; } else if
            ($var(trustconnectionip)==&quot;auto&quot;) { $var(sdpc) =
            $(rb{sdp.line,c}{s.substr,9,0}); if($td == $fd &amp;&amp;
            $td != $var(sdpc)) { $var(ciptrusted) = &quot;yes&quot;; } } if
            ($var(ciptrusted)==&quot;yes&quot;) { rtpproxy_answer(&quot;fr&quot;); } else {
            rtpproxy_answer(&quot;f&quot;); } }</span><br>
        </div>
        <div><br>
        </div>
        <div><br>
        </div>
        <div>Where TRUSTONNECTIONIP = &quot;no&quot; so basically we are doing</div>
        <div><br>
        </div>
        <div>rptproxy_offer(&quot;focn&quot;) and rtpproxy_answer(&quot;f&quot;).</div>
        <div><br>
        </div>
        <div>Kind regards:</div>
        <div><br>
        </div>
        <div>Jose Palma</div>
        <div><br>
        </div>
        <div><br>
        </div>
      </div>
      <br>
      <fieldset></fieldset>
      <br>
      </div></div><pre>_______________________________________________
Users mailing list
<a href="mailto:Users@lists.opensips.org" target="_blank">Users@lists.opensips.org</a>
<a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a>
</pre>
    </blockquote>
    <br>
  </div>

<br>_______________________________________________<br>
Users mailing list<br>
<a href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a><br>
<a href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" rel="noreferrer" target="_blank">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a><br>
<br></blockquote></div><br></div></div>