You are calling force_rtp_proxy or fix_nated_sdp on a message with empty
body. Make sure that you call the functions from the script only when
the message contains SDP body (usually INVITE and 200 OK).
Jan.
Hi,
Can anyone help me!! I am having this error on my log file when I try to
make calls. I have attached my ser.cfg. Please help!! Thanks!!
Feb 24 11:29:54 sipserver2 /usr/local/sbin/ser[20404]: ERROR:
send_rtpp_command: can't read reply from a RTP proxy
Feb 24 11:29:54 sipserver2 /usr/local/sbin/ser[20413]: ERROR: extract_body:
message body has lenght zero
Feb 24 11:29:54 sipserver2 /usr/local/sbin/ser[20413]: ERROR:
force_rtp_proxy: can't extract body from the message
Feb 24 11:29:54 sipserver2 /usr/local/sbin/ser[20413]: ERROR: on_reply
processing failed
Feb 24 11:29:54 sipserver2 /usr/local/sbin/ser[20417]: ERROR: extract_body:
message body has lenght zero
Feb 24 11:29:54 sipserver2 /usr/local/sbin/ser[20417]: ERROR:
force_rtp_proxy: can't extract body from the message
Feb 24 11:29:54 sipserver2 /usr/local/sbin/ser[20417]: ERROR: on_reply
processing failed
Feb 24 11:30:24 sipserver2 /usr/local/sbin/ser[20417]: ERROR: extract_body:
message body has lenght zero
Feb 24 11:30:24 sipserver2 /usr/local/sbin/ser[20417]: ERROR:
force_rtp_proxy: can't extract body from the message
Feb 24 11:30:24 sipserver2 /usr/local/sbin/ser[20417]: ERROR: on_reply
processing failed
Feb 24 11:30:24 sipserver2 /usr/local/sbin/ser[20407]: ERROR: extract_body:
message body has lenght zero
Feb 24 11:30:24 sipserver2 /usr/local/sbin/ser[20407]: ERROR: fix_nated_sdp:
cannot extract body from msg!
Feb 24 11:30:24 sipserver2 /usr/local/sbin/ser[20407]: ERROR: extract_body:
message body has lenght zero
Feb 24 11:30:24 sipserver2 /usr/local/sbin/ser[20407]: ERROR:
force_rtp_proxy: can't extract body from the message
Feb 24 11:30:24 sipserver2 /usr/local/sbin/ser[20407]: ERROR: on_reply
processing failed
<<ser.cfg.txt>>
regards,
shirley
#
# $Id: ser.cfg,v 1.21.4.1 2003/11/10 15:35:15 andrei Exp $
#
# simple quick-start config script
#
# ----------- global configuration parameters ------------------------
#debug=3 # debug level (cmd line: -dddddddddd)
#fork=yes
#log_stderror=no # (cmd line: -E)
/* Uncomment these lines to enter debugging mode
debug=7
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
fifo="/tmp/ser_fifo"
mhomed=yes
# ------------------ module loading ----------------------------------
# Uncomment this if you want to use SQL database
loadmodule "/usr/local/lib/ser/modules/mysql.so"
loadmodule "/usr/local/lib/ser/modules/nathelper.so"
loadmodule "/usr/local/lib/ser/modules/textops.so"
loadmodule "/usr/local/lib/ser/modules/sl.so"
loadmodule "/usr/local/lib/ser/modules/tm.so"
loadmodule "/usr/local/lib/ser/modules/rr.so"
loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
loadmodule "/usr/local/lib/ser/modules/usrloc.so"
loadmodule "/usr/local/lib/ser/modules/registrar.so"
# Uncomment this if you want digest authentication
# mysql.so must be loaded !
loadmodule "/usr/local/lib/ser/modules/auth.so"
loadmodule "/usr/local/lib/ser/modules/auth_db.so"
# ----------------- setting module-specific parameters ---------------
# -- 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)
# -- 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")
# -- rr params --
# add value to ;lr param to make some broken UAs happy
modparam("rr", "enable_full_lr", 1)
# -- Nathelper --
modparam("registrar" , "nat_flag", 6)
modparam("nathelper", "natping_interval", 60)
modparam("nathelper", "ping_nated_only", 1)
# ------------------------- 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");
break;
};
if ( msg:len > max_len ) {
sl_send_reply("513", "Message too big");
break;
};
#!! Nathelper
if (nat_uac_test("3")){
if (method == "REGISTER"){
log("LOG:Someone trying to register from private IP, rewriting\n");
fix_nated_contact(); # Rewtite contact with source IP of signalling
if(method== "INVITE"){
fix_nated_sdp("1"); # Add direction-active to SDP
};
force_rport();
setflag(6);
};
};
# 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
record_route();
# loose-route processing
if (loose_route()) {
t_relay();
break;
};
# 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 (method=="REGISTER") {
save("location");
break;
};
# native SIP destinations are handled using our USRLOC DB
if (!lookup("location")) {
sl_send_reply("", "Connecting");
break;
};
};
if (isflagset(6)){
force_rtp_proxy();
};
t_on_reply("1");
# forward to current uri now; use stateful forwarding; that
# works reliably even if we forward from TCP to UDP
if (!t_relay()) {
sl_reply_error();
break;
};
}
# all incoming replies for t_onrepli-ed transactions enter here
onreply_route[1] {
if (isflagset(6) && status=~"(183)|2[0-9][0-9]") {
fix_nated_contact();
fix_nated_sdp("1");
force_rtp_proxy();
}else if(nat_uac_test("1")){
fix_nated_contact();
force_rtp_proxy();
};
}