<div style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial"><div>Hi, Bogdan:<br><br>I think I have found the problem.<br>I am using mediaproxy. If I kill that proxy.<br>suddenly the uac can get the message.<br>So it is quite obvious that my mediaproxy setting is not correct.<br>Just I don't know how to fix it. I modify it from my old rtpproxy setting.<br><br><br>George<br></div><br><div>/////////////////////<br><br><br>####&nbsp; NAT modules<br>loadmodule "nathelper.so"<br>modparam("nathelper", "natping_interval", 10)<br>modparam("nathelper", "ping_nated_only", 1)<br>modparam("nathelper", "received_avp", "$avp(received_nh)")<br><br>#loadmodule "rtpproxy.so"<br>#modparam("rtpproxy", "rtpproxy_sock", "udp:localhost:12221") # CUSTOMIZE ME<br><br>loadmodule "mediaproxy.so"<br>modparam("mediaproxy", "mediaproxy_socket", "/var/run/mediaproxy/dispatcher.sock")<br>modparam("mediaproxy", "ice_candidate", "low-priority")<br><br><br><br></div><br>####### Routing Logic ########<br><br># main request routing logic<br><br>route{<br>&nbsp;&nbsp;&nbsp; force_rport();<br>&nbsp;&nbsp;&nbsp; if (nat_uac_test("23")) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (is_method("REGISTER")) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; fix_nated_register();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; setbflag(NAT);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } else {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; fix_nated_contact();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; setflag(NAT);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; <br><br>&nbsp;&nbsp;&nbsp; if (!mf_process_maxfwd_header("10")) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply("483","Too Many Hops");<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; if (has_totag()) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # sequential request withing a dialog should<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # take the path determined by record-routing<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (loose_route()) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (is_method("BYE")) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; setflag(ACC_DO); # do accounting ...<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; setflag(ACC_FAILED); # ... even if the transaction fails<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } else if (is_method("INVITE")) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # even if in most of the cases is useless, do RR for<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # re-INVITEs alos, as some buggy clients do change route set<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # during the dialog.<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; record_route();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (check_route_param("nat=yes")) <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; setflag(NAT);<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # route it out to whatever destination was set by loose_route()<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # in $du (destination URI).<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; route(relay);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } else {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if ( is_method("ACK") ) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if ( t_check_trans() ) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # non loose-route, but stateful ACK; must be an ACK after <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # a 487 or e.g. 404 from upstream server<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; t_relay();<br>&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; } else {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # ACK without matching transaction -&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # ignore and discard<br>&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; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply("404","Not here");<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; # CANCEL processing<br>&nbsp;&nbsp;&nbsp; if (is_method("CANCEL"))<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (t_check_trans())<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; t_relay();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; t_check_trans();<br><br>&nbsp;&nbsp;&nbsp; if ( !(is_method("REGISTER")&nbsp; ) ) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (from_uri==myself)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } else {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # if caller is not local, then called number must be local<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (!uri==myself) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; send_reply("403","Rely forbidden");<br>&nbsp;&nbsp;&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><br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; # preloaded route checking<br>&nbsp;&nbsp;&nbsp; if (loose_route()) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; xlog("L_ERR",<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; "Attempt to route with preloaded Route's [$fu/$tu/$ru/$ci]");<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (!is_method("ACK"))<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply("403","Preload Route denied");<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; # record routing<br>&nbsp;&nbsp;&nbsp; if (!is_method("REGISTER|MESSAGE"))<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; record_route();<br><br>&nbsp;&nbsp;&nbsp; # account only INVITEs<br>&nbsp;&nbsp;&nbsp; if (is_method("INVITE")) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; setflag(ACC_DO); # do accounting<br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; if (!uri==myself) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; append_hf("P-hint: outbound\r\n"); <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # if you have some interdomain connections via TLS<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ## CUSTOMIZE IF NEEDED<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##if ($rd=="tls_domain1.net"<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ## || $rd=="tls_domain2.net"<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; force_send_socket(tls:127.0.0.1:5061); # CUSTOMIZE<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ##}<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; route(relay);<br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; # requests for my domain<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; if (is_method("PUBLISH|SUBSCRIBE"))<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply("503", "Service Unavailable");<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; if (is_method("REGISTER"))<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if ( proto==TCP || proto==TLS || 0 ) setflag(TCP_PERSISTENT);<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (!save("location"))<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_reply_error();<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; if ($rU==NULL) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # request with no Username in RURI<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply("484","Address Incomplete");<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; <br><br>&nbsp;&nbsp;&nbsp; <br><br>&nbsp;&nbsp;&nbsp; &nbsp;<br><br>&nbsp;&nbsp;&nbsp; # do lookup with method filtering<br>&nbsp;&nbsp;&nbsp; if (!lookup("location","m")) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; t_newtran();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; t_reply("404", "Not Found");<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; } <br><br>&nbsp;&nbsp;&nbsp; if (isbflagset(NAT)) setflag(NAT);<br><br>&nbsp;&nbsp;&nbsp; # when routing via usrloc, log the missed calls also<br>&nbsp;&nbsp;&nbsp; setflag(ACC_MISSED);<br>&nbsp;&nbsp;&nbsp; route(relay);<br>}<br><br><br>route[relay] {<br>&nbsp;&nbsp;&nbsp; # for INVITEs enable some additional helper routes<br>&nbsp;&nbsp;&nbsp; if (is_method("INVITE")) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (isflagset(NAT)) {<br>#&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; rtpproxy_offer("ro");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; use_media_proxy();<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; t_on_branch("per_branch_ops");<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; t_on_reply("handle_nat");<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; t_on_failure("missed_call");<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (is_method("BYE")) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (isflagset(NAT)) {<br>&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; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br><br>&nbsp;&nbsp;&nbsp; if (isflagset(NAT)) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; add_rr_param(";nat=yes");<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; if (!t_relay()) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; send_reply("500","Internal Error");<br>&nbsp;&nbsp;&nbsp; };<br>&nbsp;&nbsp;&nbsp; exit;<br>}<br><br><br><br><br>branch_route[per_branch_ops] {<br>&nbsp;&nbsp;&nbsp; xlog("new branch at $ru\n");<br>}<br><br><br>onreply_route[handle_nat] {<br>&nbsp;&nbsp;&nbsp; if (nat_uac_test("1"))<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; fix_nated_contact();<br>#&nbsp;&nbsp;&nbsp; if ( isflagset(NAT) )<br>#&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; rtpproxy_answer("ro");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (is_method("INVITE")) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (isflagset(NAT)) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; use_media_proxy();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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 (is_method("BYE")) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (isflagset(NAT)) {<br>&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; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; xlog("incoming reply\n");<br>}<br><br><br>failure_route[missed_call] {<br>&nbsp;&nbsp;&nbsp; if (t_was_cancelled()) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; # uncomment the following lines if you want to block client <br>&nbsp;&nbsp;&nbsp; # redirect based on 3xx replies.<br>&nbsp;&nbsp;&nbsp; ##if (t_check_status("3[0-9][0-9]")) {<br>&nbsp;&nbsp;&nbsp; ##t_reply("404","Not found");<br>&nbsp;&nbsp;&nbsp; ##&nbsp;&nbsp;&nbsp; exit;<br>&nbsp;&nbsp;&nbsp; ##}<br><br>&nbsp;&nbsp;&nbsp; <br>}<br><br><br><br><br><div></div><div id="divNeteaseMailCard"></div><br>ÔÚ 2014-10-15 15:13:00£¬"Bogdan-Andrei Iancu" &lt;bogdan@opensips.org&gt; Ð´µÀ£º<br> <blockquote id="isReplyContent" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">
  
    
  
  
    <div class="moz-cite-prefix"><tt>Hi George,<br>
        <br>
        If your OpenSIPS fails to reach the UAC is because of two
        reasons:<br>
        &nbsp;&nbsp;&nbsp; - NAT pinhole is closed - but if pinging is done, it shouldn't
        be<br>
        &nbsp;&nbsp;&nbsp; - opensips is trying to contact UAC via wrong IP:port - can
        you confirm that when calling the UAC, OpenSIPS sends the INVITE
        to same IP and port as where the pingings are coming from ?<br>
        <br>
        TCP works as this part is "automatically" resolved because of
        the connection (where the other pipe is known).<br>
        <br>
        Regards,<br>
      </tt>
      <pre class="moz-signature" cols="72">Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
<a class="moz-txt-link-freetext" href="http://www.opensips-solutions.com">http://www.opensips-solutions.com</a></pre>
      On 15.10.2014 03:24, george wu wrote:<br>
    </div>
    <blockquote cite="mid:4dd40a9b.e54.14911311a6a.Coremail.aihuawu2012@163.com" type="cite">
      <div style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial"><br>
        <div>Hi, Bogdan-Andrei:<br>
          <br>
          For udp, it fails when <tt>reaching the UAC even though the
            UAC keeps pinging the server all the time.<br>
            <br>
            For tcp, although it works. I find something interesting.<br>
            Only when the client pings the server, the invite message is
            sent to the UAC.<br>
            In my understanding, the server should be able to send
            message to the UAC since the <br>
            tcp connection is open. Actually the sip server is unable to
            send message to the UAC.<br>
            <br>
            About the firewall type, I use opensipsctl ul show/rm to
            check.<br>
            I find every time when it register, i get the same ip/port</tt><tt><tt>
              most of time</tt>. <br>
            But occasionally it might get different ip/port.<br>
            I believe it is nat within a cone.<br>
            <br>
            I am using ice, the ice only work after the first invite
            message is delivered to the peer.<br>
            My ice with mediaproxy works perfectly.<br>
            <br>
          </tt></div>
        <br>
        George Wu<br>
        <br>
        At 2014-10-15 00:22:46, "Bogdan-Andrei Iancu"
        <a class="moz-txt-link-rfc2396E" href="mailto:bogdan@opensips.org">&lt;bogdan@opensips.org&gt;</a> wrote:<br>
        <blockquote id="isReplyContent" style="PADDING-LEFT: 1ex;
          MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">
          <div class="moz-cite-prefix"><tt>Hi George,<br>
              <br>
              NAT traversal is not only about pinging, but also about
              mangling/correcting the SIP traffic (from private IPs
              perspective) and ensuring the RTP flow.<br>
              <br>
              So you need to be sure that all 3 points are addressed.<br>
              <br>
              TCP versus UDP - there is only a difference at IP
              transport level...like datagram versus connection, and
              their implications at NAT level (being able to reach the
              device behind the nat). Otherwise it;s the same.<br>
              <br>
              For UDP, can you see what fails ? the registration?
              reaching the UAC ? <br>
              <br>
              Regards,<br>
            </tt>
            <pre class="moz-signature" cols="72">Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://www.opensips-solutions.com">http://www.opensips-solutions.com</a></pre>
            On 14.10.2014 18:37, george wu wrote:<br>
          </div>
          <blockquote cite="mid:9f50cdb.2658d.1490f4e26ee.Coremail.aihuawu2012@163.com" type="cite">
            <div style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial">
              <div>My experience is for two uac (linphone) behind a
                firewall,<br>
                tcp/tls will always work.<br>
                udp will never work.<br>
                <br>
                for both tcp/udp, my uac will send keep alive every 10
                seconds.<br>
                I don't understand what makes those difference.<br>
                Can any one&nbsp; share your experience?<br>
                <br>
                George Wu<br>
                <br>
                <br>
              </div>
            </div>
            <br>
            <br>
            <span title="neteasefooter"><span id="netease_mail_footer"></span></span><br>
            <fieldset class="mimeAttachmentHeader"></fieldset>
            <br>
            <pre wrap="">_______________________________________________
Users mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a>
</pre>
          </blockquote>
          <br>
        </blockquote>
      </div>
      <br>
      <br>
      <span title="neteasefooter"><span id="netease_mail_footer"></span></span>
    </blockquote>
    <br>
  

</blockquote></div><br><br><span title="neteasefooter"><span id="netease_mail_footer"></span></span>