[OpenSIPS-Users] ERROR:rtpproxy:force_rtp_proxy: Unable to parse body

Nick nick_chang at ezmobo.com
Mon Oct 24 04:39:16 CEST 2011


Hello

I used opensips Server 1.7.
My client is linphone for android.
Other is idoubs v2.x for iphone

I used idoubs call to linphone.
It's display error in the message

/usr/local/sbin/opensips[2135]: ERROR:rtpproxy:force_rtp_proxy: Unable 
to parse body
/usr/local/sbin/opensips[2133]: ERROR:rtpproxy:force_rtp_proxy_body: 
incorrect port 0 in reply from rtp proxy
/usr/local/sbin/opensips[2136]: ERROR:rtpproxy:force_rtp_proxy: Unable 
to parse body
/usr/local/sbin/opensips[2134]: ERROR:rtpproxy:force_rtp_proxy_body: 
incorrect port 0 in reply from rtp proxy
/usr/local/sbin/opensips[2136]: ERROR:rtpproxy:force_rtp_proxy: Unable 
to parse body


It's my config
# ----------- global configuration parameters ------------------------

debug=4         # debug level (cmd line: -dddddddddd)
fork=yes
log_stderror=no    # (cmd line: -E)

/* Uncomment these lines to enter debugging mode
fork=no
log_stderror=yes
*/

check_via=no    # (cmd. line: -v)
dns=no           # (cmd. line: -r)
rev_dns=no      # (cmd. line: -R)
port=5060
children=4

db_default_url="postgres://opensips:opensipsrw@10.10.12.100/opensips"
# ------------------ module loading ----------------------------------

#set module path
mpath="/usr/local/lib64/opensips/modules/"

# Uncomment this if you want to use SQL database
#loadmodule "db_mysql.so"

loadmodule "db_postgres.so"
loadmodule "sl.so"
loadmodule "tm.so"
loadmodule "signaling.so"
loadmodule "rr.so"
loadmodule "maxfwd.so"
loadmodule "usrloc.so"
loadmodule "registrar.so"
loadmodule "textops.so"
loadmodule "mi_fifo.so"
loadmodule "uri.so"
loadmodule "acc.so"

# Uncomment this if you want digest authentication
# db_mysql.so must be loaded !
#loadmodule "auth.so"
#loadmodule "auth_db.so"

# !! Nathelper
loadmodule "nathelper.so"
#loadmodule "nat_traversal.so"
loadmodule "rtpproxy.so"
loadmodule "dialog.so"

# ----------------- setting module-specific parameters ---------------

modparam("rtpproxy", "rtpproxy_sock", "udp:127.0.0.1:19999")
# -- mi_fifo params --
modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo")

# -- usrloc params --
modparam("usrloc", "db_mode",   0)

# Uncomment this if you want to use SQL database
# for persistent storage and comment the previous line
#modparam("usrloc", "db_mode", 2)
# ----- uri params -----
modparam("uri", "use_uri_table", 0)


# ----- acc params -----
/* what sepcial events should be accounted ? */
modparam("acc", "early_media", 1)
modparam("acc", "report_cancels", 1)
/* by default ww do not adjust the direct of the sequential requests.
    if you enable this parameter, be sure the enable "append_fromtag"
    in "rr" module */
modparam("acc", "detect_direction", 0)
/* account triggers (flags) */
modparam("acc", "failed_transaction_flag", 3)
modparam("acc", "log_flag", 1)
modparam("acc", "log_missed_flag", 2)
/* uncomment the following lines to enable DB accounting also */
modparam("acc", "db_flag", 1)
modparam("acc", "db_missed_flag", 2)

# -- auth params --
# Uncomment if you are using auth module
#modparam("auth_db", "calculate_ha1", yes)
#
# If you set "calculate_ha1" parameter to yes (which true in this config),
# uncomment also the following parameter)
#modparam("auth_db", "password_column", "password")

# !! Nathelper
modparam("usrloc","nat_bflag",6)
modparam("nathelper","sipping_bflag",8)
modparam("nathelper", "ping_nated_only", 1)   # Ping only clients behind NAT

# -------------------------  request routing logic -------------------

# main routing logic

route{

     # initial sanity checks -- messages with
     # max_forwards==0, or excessively long requests
     if (!mf_process_maxfwd_header("10")) {
         sl_send_reply("483","Too Many Hops");
         exit;
     };
     if (msg:len >=  2048 ) {
         sl_send_reply("513", "Message too big");
         exit;
     };

     # !! Nathelper
     # Special handling for NATed clients; first, NAT test is
     # executed: it looks for via!=received and RFC1918 addresses
     # in Contact (may fail if line-folding is used); also,
     # the received test should, if completed, should check all
     # vias for rpesence of received
     if (nat_uac_test("3")) {
         # Allow RR-ed requests, as these may indicate that
         # a NAT-enabled proxy takes care of it; unless it is
         # a REGISTER

         if (is_method("REGISTER") || !is_present_hf("Record-Route")) {
             log("LOG:Someone trying to register from private IP, 
rewriting\n");
             # This will work only for user agents that support symmetric
             # communication. We tested quite many of them and majority is
             # smart enough to be symmetric. In some phones it takes a
             # configuration option. With Cisco 7960, it is called
             # NAT_Enable=Yes, with kphone it is called "symmetric 
media" and
             # "symmetric signalling".

             # Rewrite contact with source IP of signalling
             fix_nated_contact();
             if ( is_method("INVITE") ) {
                 fix_nated_sdp("1"); # Add direction=active to SDP
             };
             force_rport(); # Add rport parameter to topmost Via
             setbflag(6);    # Mark as NATed

             # if you want sip nat pinging
              setbflag(8);
         };
     };

     # subsequent messages withing a dialog should take the
     # path determined by record-routing
     if (loose_route()) {
         # mark routing logic in request
         append_hf("P-hint: rr-enforced\r\n");
         route(1);
         exit;
     };

     # we record-route all messages -- to make sure that
     # subsequent messages will go through our proxy; that's
     # particularly good if upstream and downstream entities
     # use different transport protocol
     if (!is_method("REGISTER"))
         record_route();

     if (!uri==myself) {
         # mark routing logic in request
         append_hf("P-hint: outbound\r\n");
         route(1);
         exit;
     };

     # if the request is for other domain use UsrLoc
     # (in case, it does not work, use the following command
     # with proper names and addresses in it)
     if (uri==myself) {

         if (is_method("REGISTER")) {

             # Uncomment this if you want to use digest authentication
             #if (!www_authorize("siphub.org", "subscriber")) {
             #    www_challenge("siphub.org", "0");
             #    return;
             #};

             save("location");
             exit;
         };

         lookup("aliases");
         if (!uri==myself) {
             append_hf("P-hint: outbound alias\r\n");
             route(1);
             exit;
         };

         # native SIP destinations are handled using our USRLOC DB
         if (!lookup("location")) {
             sl_send_reply("404", "Not Found");
             exit;
         };
     };
     append_hf("P-hint: usrloc applied\r\n");
     route(1);
}

route[1]
{
     # !! Nathelper
     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");
         exit;
     };

     # if client or server know to be behind a NAT, enable relay
     if (isbflagset(6)) {
         rtpproxy_answer();
     };

     # NAT processing of replies; apply to all transactions (for example,
     # re-INVITEs from public to private UA are hard to identify as
     # NATed at the moment of request processing); look at replies
     t_on_reply("1");

     # send it out now; use stateful forwarding as it works reliably
     # even for UDP2TCP
     if (!t_relay()) {
         sl_reply_error();
     };
}

# !! Nathelper
onreply_route[1] {
     # NATed transaction ?
     if (isbflagset(6) && status =~ "(183)|2[0-9][0-9]") {
         fix_nated_contact();
         rtpproxy_answer();
     # otherwise, is it a transaction behind a NAT and we did not
     # know at time of request processing ? (RFC1918 contacts)
     } else if (nat_uac_test("1")) {
         fix_nated_contact();
     };
}


Cay everybody give me a suggest?? What's wrong ??

Thanks

Nick



More information about the Users mailing list