I'm using openser 1.0.1 with rtpproxy and nathelper. Calls are goin through with good audio. Hanging up is fine too. However I've noticed I've been getting errors in my logs: <br> <br> ERROR: extract_body: message body has length zero<br> ERROR: force_rtp_proxy2: can't extract body from the message<br> <br> I'm assuming I'm doin something wrong in my config but I dont know where. Can someone please point out my mistakes? Thank you<br> <br> # start RTPProxy with: rtpproxy -l your_public_ip -s udp:localhost:8899<br> #<br> <br> # ----------- global configuration parameters ------------------------<br> <br> debug=3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # debug level (cmd line: -dddddddddd)<br> fork=yes<br> log_stderror=no&nbsp;&nbsp;&nbsp; # (cmd line: -E)<br> <br> /* Uncomment these lines to enter debugging mode <br> fork=no<br> log_stderror=yes<br> */<br> <br> port=5060<br> children=4<br> <br> listen=68.xxx.xxx.xxx<br> alias=test.com<br> <br>
 check_via=no&nbsp;&nbsp;&nbsp; # (cmd. line: -v)<br> dns=no&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # (cmd. line: -r)<br> rev_dns=no&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # (cmd. line: -R)<br> <br> fifo="/tmp/openser_fifo"<br> fifo_db_url="mysql://openser:openserrw@localhost/openser"<br> <br> # --- module loading<br> <br> loadmodule "/usr/local/lib/openser/modules/mysql.so"<br> loadmodule "/usr/local/lib/openser/modules/sl.so"<br> loadmodule "/usr/local/lib/openser/modules/tm.so"<br> loadmodule "/usr/local/lib/openser/modules/rr.so"<br> loadmodule "/usr/local/lib/openser/modules/maxfwd.so"<br> loadmodule "/usr/local/lib/openser/modules/usrloc.so"<br> loadmodule "/usr/local/lib/openser/modules/registrar.so"<br> loadmodule "/usr/local/lib/openser/modules/auth.so"<br> loadmodule "/usr/local/lib/openser/modules/auth_db.so"<br> loadmodule "/usr/local/lib/openser/modules/uri.so"<br> loadmodule "/usr/local/lib/openser/modules/uri_db.so"<br> loadmodule
 "/usr/local/lib/openser/modules/domain.so"<br> loadmodule "/usr/local/lib/openser/modules/nathelper.so"<br> loadmodule "/usr/local/lib/openser/modules/avpops.so"<br> loadmodule "/usr/local/lib/openser/modules/textops.so"<br> loadmodule "/usr/local/lib/openser/modules/xlog.so"<br> loadmodule "/usr/local/lib/openser/modules/permissions.so"<br> <br> # --- setting module parameters<br> <br> modparam("auth_db|permissions|uri_db|usrloc", "db_url",<br> &nbsp;&nbsp;&nbsp; "mysql://openser:openserrw@localhost/openser")<br> <br> # -- usrloc params --<br> modparam("usrloc", "db_mode", 2)<br> <br> # -- registrar params --<br> modparam("registrar", "nat_flag", 6)<br> modparam("registrar", "sip_natping_flag", 7)<br> <br> # -- auth params --<br> modparam("auth_db", "calculate_ha1", yes)<br> modparam("auth_db", "password_column", "password")<br> <br> # -- rr params --<br> modparam("rr", "enable_full_lr", 1)<br> <br> # -- nathelper --<br> modparam("nathelper", "rtpproxy_sock",
 "unix:/var/run/rtpproxy.sock")<br> modparam("nathelper", "natping_interval", 30)<br> modparam("nathelper", "ping_nated_only", 1)<br> modparam("nathelper", "sipping_from", "sip:pinger@test.com")<br> <br> # -- tm params --<br> modparam("tm", "fr_inv_timer", 27)<br> modparam("tm", "fr_inv_timer_avp", "inv_timeout")<br> <br> # -- permissions param --<br> modparam("permissions", "db_mode", 1)<br> modparam("permissions", "trusted_table", "trusted")<br> <br> # --- main routing logic<br> route{<br> &nbsp;&nbsp;&nbsp; <br> &nbsp;&nbsp;&nbsp; # -----------------------------------------------------------------<br> &nbsp;&nbsp;&nbsp; # Sanity Check Section<br> &nbsp;&nbsp;&nbsp; # -----------------------------------------------------------------<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> &nbsp;&nbsp;&nbsp; if
 (msg:len &gt;=&nbsp; 2048 ) {<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply("513", "Message too big");<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br> &nbsp;&nbsp;&nbsp; };<br> <br> &nbsp;&nbsp;&nbsp; # -----------------------------------------------------------------<br> &nbsp;&nbsp;&nbsp; # NAT detection<br> &nbsp;&nbsp;&nbsp; # -----------------------------------------------------------------<br> &nbsp;&nbsp;&nbsp; route(2);<br> <br> <br> &nbsp;&nbsp;&nbsp; # -----------------------------------------------------------------<br> &nbsp;&nbsp;&nbsp; # Record Route Section<br> &nbsp;&nbsp;&nbsp; # -----------------------------------------------------------------<br> &nbsp;&nbsp;&nbsp; if (!method=="REGISTER")<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; record_route();<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br> &nbsp;&nbsp;&nbsp; # -----------------------------------------------------------------<br> &nbsp;&nbsp;&nbsp; # Loose Route Section<br>
 &nbsp;&nbsp;&nbsp; # -----------------------------------------------------------------<br> &nbsp;&nbsp;&nbsp; if (loose_route()) {<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; append_hf("P-hint: rr-enforced\r\n"); <br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if ((method=="INVITE" || method=="REFER") &amp;&amp; !has_totag()) {<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply("403", "Forbidden");<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return;<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br> <br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (method=="INVITE") {<br> <br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (!proxy_authorize("","subscriber")) {<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; proxy_challenge("","0");<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return;<br> &nbsp;&nbsp;&nbsp;
 &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } else if (!check_from()) {<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply("403", "Use From=ID");<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return;<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; consume_credentials();<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; route(1);<br> &nbsp;&nbsp;&nbsp; };<br> <br> <br> &nbsp;&nbsp;&nbsp; # -----------------------------------------------------------------<br> &nbsp;&nbsp;&nbsp; # Call Type Processing Section<br> &nbsp;&nbsp;&nbsp; # -----------------------------------------------------------------<br> &nbsp;&nbsp;&nbsp; if (!is_uri_host_local()) {<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (is_from_local() || allow_trusted()) {<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
 route(4);<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; route(1);<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } else {<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply("403", "Forbidden");<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br> &nbsp;&nbsp;&nbsp; };<br> <br> &nbsp;&nbsp;&nbsp; if (method=="ACK") {<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; route(1);<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return;<br> &nbsp;&nbsp;&nbsp; } else if (method=="CANCEL") {<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; route(1);<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return;<br> &nbsp;&nbsp;&nbsp; } else if (method=="INVITE") {<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; route(5);<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return;<br> &nbsp;&nbsp;&nbsp; } else&nbsp; if (method=="REGISTER") {<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; route(4);<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return;<br> &nbsp;&nbsp;&nbsp; };<br> <br> &nbsp;&nbsp;&nbsp;
 lookup("aliases");<br> &nbsp;&nbsp;&nbsp; if (!is_uri_host_local()) {<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; route(4);<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; route(1);<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return;<br> &nbsp;&nbsp;&nbsp; };<br> <br> &nbsp;&nbsp;&nbsp; if (!lookup("location")) {<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply("404", "User Not Found");<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br> &nbsp;&nbsp;&nbsp; };<br> &nbsp;&nbsp;&nbsp; <br> &nbsp;&nbsp;&nbsp; append_hf("P-hint: usrloc applied\r\n");<br> <br> &nbsp;&nbsp;&nbsp; route(1);<br> }<br> <br> <br> route[1] {<br> &nbsp;&nbsp;&nbsp; if (subst_uri('/(sip:.*);nat=yes/\1/')){<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; setflag(6);<br> &nbsp;&nbsp;&nbsp; };<br> <br> &nbsp;&nbsp;&nbsp; if (isflagset(5)||isflagset(6)) {<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; route(3);<br> &nbsp;&nbsp;&nbsp; }<br> <br> &nbsp;&nbsp;&nbsp; if (!t_relay()) {<br> &nbsp;&nbsp;&nbsp;
 &nbsp;&nbsp;&nbsp; sl_reply_error();<br> &nbsp;&nbsp;&nbsp; };<br> &nbsp;&nbsp;&nbsp; exit;<br> }<br> <br> route[2]{<br> &nbsp;&nbsp;&nbsp; force_rport();<br> &nbsp;&nbsp;&nbsp; if (nat_uac_test("19")) {<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (method=="REGISTER") {<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; fix_nated_register();<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; };<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; setflag(5);<br> &nbsp;&nbsp;&nbsp; };<br> }<br> <br> route[3] {<br> &nbsp;&nbsp;&nbsp; if (is_method("BYE|CANCEL")) {<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; unforce_rtp_proxy();<br> &nbsp;&nbsp;&nbsp; } else if (is_method("INVITE")){<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; force_rtp_proxy();<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; t_on_failure("1");<br> &nbsp;&nbsp;&nbsp; };<br> &nbsp;&nbsp;&nbsp; if
 (isflagset(5))<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; search_append('Contact:.*sip:[^&gt;[:cntrl:]]*', ';nat=yes');<br> &nbsp;&nbsp;&nbsp; t_on_reply("1");<br> }<br> <br> route[4] {<br> &nbsp;&nbsp;&nbsp; <br> &nbsp;&nbsp;&nbsp; if (!www_authorize("", "subscriber")) {<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; www_challenge("", "0");<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit;<br> &nbsp;&nbsp;&nbsp; };<br> <br> &nbsp;&nbsp;&nbsp; if (isflagset(5)) {<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; setflag(6);<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # if you want OPTIONS natpings uncomment next<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # setflag(7);<br> &nbsp;&nbsp;&nbsp; };<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br> &nbsp;&nbsp;&nbsp; save("location");<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br> &nbsp;&nbsp;&nbsp; if (!lookup("location")) {<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_reply_error();<br> &nbsp;&nbsp;&nbsp; };<br> &nbsp;&nbsp;&nbsp;
 &nbsp;&nbsp;&nbsp; <br> &nbsp;&nbsp;&nbsp; append_hf("P-hint: usrloc applied\r\n"); <br> <br> }<br> <br> route[5] {<br> &nbsp;&nbsp;&nbsp; <br> &nbsp;&nbsp;&nbsp; # -----------------------------------------------------------------<br> &nbsp;&nbsp;&nbsp; # INVITE Message Handler<br> &nbsp;&nbsp;&nbsp; # -----------------------------------------------------------------&nbsp;&nbsp;&nbsp; <br> &nbsp;&nbsp;&nbsp; if (!allow_trusted()) {<br> &nbsp;&nbsp;&nbsp; <br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (!proxy_authorize("","subscriber")) {<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; proxy_challenge("","0");<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return;<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } else if (!check_from()) {<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sl_send_reply("403", "Use From=ID");<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return;<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br>
 &nbsp;&nbsp;&nbsp; };<br> &nbsp;&nbsp;&nbsp; <br> &nbsp;&nbsp;&nbsp; lookup("aliases");<br> &nbsp;&nbsp;&nbsp; if (!is_uri_host_local()) {<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; route(1);<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return;<br> &nbsp;&nbsp;&nbsp; };<br> <br> &nbsp;&nbsp;&nbsp; if (uri=~"^sip:[0-9]{3}@") {<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; lookup("aliases");<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; lookup("location");<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; route(1);<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return;<br> &nbsp;&nbsp;&nbsp; };&nbsp;&nbsp;&nbsp; <br> <br> &nbsp;&nbsp;&nbsp; if(!lookup("location")){<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (uri=~"^sip:[0-9]*@") {&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; route(6);<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return;<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br> <br> <br> &nbsp;&nbsp;&nbsp;
 &nbsp;&nbsp;&nbsp; sl_send_reply("404", "User Not Found");<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return;<br> &nbsp;&nbsp;&nbsp; };<br> <br> &nbsp;&nbsp;&nbsp; route(1);<br> }<br> <br> route[6] {<br> <br> &nbsp;&nbsp;&nbsp; # -----------------------------------------------------------------<br> &nbsp;&nbsp;&nbsp; # PSTN Handler<br> &nbsp;&nbsp;&nbsp; # -----------------------------------------------------------------<br> <br> &nbsp;&nbsp;&nbsp; rewritehostport("pstn.gateway:5060"); <br> <br> &nbsp;&nbsp;&nbsp; avp_write("i:45", "inv_timeout");<br> <br> &nbsp;&nbsp;&nbsp; route(1);<br> }<br> &nbsp;&nbsp;&nbsp; <br> <br> failure_route[1] {<br> &nbsp;&nbsp;&nbsp; if (isflagset(6) || isflagset(5)) {<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; unforce_rtp_proxy();<br> &nbsp;&nbsp;&nbsp; }<br> }<br> <br> onreply_route[1] {<br> &nbsp;&nbsp;&nbsp; if ((isflagset(5) || isflagset(6)) &amp;&amp; status=~"(183)|(2[0-9][0-9])") {<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
 force_rtp_proxy();<br> &nbsp;&nbsp;&nbsp; }<br> &nbsp;&nbsp;&nbsp; search_append('Contact:.*sip:[^&gt;[:cntrl:]]*', ';nat=yes');<br> &nbsp;&nbsp;&nbsp; <br> &nbsp;&nbsp;&nbsp; if (isflagset(6)) {<br> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; fix_nated_contact();<br> &nbsp;&nbsp;&nbsp; }<br> &nbsp;&nbsp;&nbsp; <br> &nbsp;&nbsp;&nbsp; exit;<br> }<br> <br> <p>&#32;
                <hr size=1>Do you Yahoo!?<br> Everyone is raving about the <a href="http://us.rd.yahoo.com/evt=42297/*http://advision.webevents.yahoo.com/handraisers"> all-new Yahoo! Mail Beta.</a>