Jiri:

I thought I had responded to Jan on the matter already.  You are correct.  I was misusing the nathelper functions.
Apparently fix_nated_sdp("1") when used in conjuction with force_rtp_proxy causes an unhappy sdp length.  More importantly it is an unnecessary call.

Just the same, I thank you for your follow up.  Your work is VERY appreciated!

Jac

Bad:
        if (isflagset(1)) {
                     fix_nated_sdp("1");

                force_rtp_proxy();
                t_on_reply("2");
        }

Good:
        if (isflagset(1)) {
                force_rtp_proxy();
                t_on_reply("2");
        }



Jiri Kuthan wrote:
Jac,

can you send us 1) dumps of the INVITEs which emberass the gateways and
2) as much Cisco's logs about the even (debug ccsip all) as you can?
I can imagine you are using some mixed sources which may lead to
miscalculation of rewritten content-length field or other similar
things. Again -- that's a very wild guess, seeing the actual messages
would be helpful.

Thanks,

-jiri

At 06:20 PM 2/23/2004, Jac Barben wrote:
  
All:

Please bear with me... I'm having a hard time formulating this quesiton.

Basics:
ser-0.8.12  from src
rtpproxy = $Id: main.c,v 1.19.2.10 2003/10/18 20:14:22 sobomax Exp
RH 7.3  updated to: [root@sip2 rtpproxy]# uname -a
Linux sip2.claritycolorado.com 2.4.20-20.7 #1 Mon Aug 18 14:56:30 EDT 2003 i686
unknown

The problem seems to be that I cannot "always" forward calls to a given destination if I have executed the force_rtp_proxy.

Typically I'm using a UA like a Cisco ATA, PureData, or softphone behind a firewall.  They in-turn register to SER/rtpproxy at a legal IP address; most calls are then forwarded to a Vega gateway that resides on the same network as SER/rtpproxy (in Denver).  In this instance all is well.  However, when I try to alt route calls to an "off-network" source (Cisco in LA and Sonus in Houston) I get two different and disturbing results:
1. Cisco will not respond to SER:  Cisco simply indicates in its own logs that the INVITE is invalid and thus "trashed" the message
2. Sonus will respond with a "Bad Request"

Below are some snippets:

Prior to calling the route I have already I identified whether or not my UA is behind a firewall and have fix_nated_contact(), force_rport(), setflag(1)

SER/rtpproxy is running at 64.47.72.12

# Clarity Vega Evergreen CO -- this one works
route[1]
{
      if (uri=~"[@:](192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.)" &&
              !search("^Route:") ) {
              sl_send_reply("479",
                      "We don't forward to private IP addresses");
              break;
      };
                                                                              

      record_route();
      if (isflagset(1)) {
              fix_nated_sdp("1");
              force_rtp_proxy();
              t_on_reply("2");
      }
                                                                              

      rewritehostport("64.47.72.10:5060");
      t_relay();
}

# Clarity Cisco AS5300 LA -- this one does not
route[2]
{
      if (uri=~"[@:](192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.)" &&
              !search("^Route:") ) {
              sl_send_reply("479",
                      "We don't forward to private IP addresses");
              break;
      };
                                                                              

      record_route();
      if (isflagset(1)) {
              fix_nated_sdp("1");
              force_rtp_proxy();
              t_on_reply("2");
      }
                                                                              

      rewritehostport("198.77.133.30:5060");
      t_relay();
}


# Clarity Sonus Houston  -- this one does not
route[3]
{
      if (uri=~"[@:](192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.)" &&
              !search("^Route:") ) {
              sl_send_reply("479",
                      "We don't forward to private IP addresses");
              break;
      };
                                                                              

      record_route();
      if (isflagset(1)) {
              fix_nated_sdp("1");
              force_rtp_proxy();
              t_on_reply("2");
      }
                                                                              

      rewritehostport("64.47.6.6:5060");
      t_relay();
}

/* inbound */
onreply_route[2] {
      fix_nated_contact();
      fix_nated_sdp("1");
      force_rtp_proxy();
}


Please... If you have any ideas... I'm really stuck.

Jac Barben

_______________________________________________
Serusers mailing list
serusers@lists.iptel.org
http://lists.iptel.org/mailman/listinfo/serusers
    

--
Jiri Kuthan            http://iptel.org/~jiri/