route{ if(!mf_process_maxfwd_header("10")){ sl_send_reply("483", "Too Many Hops"); return; } if(msg:len >= max_len){ sl_send_reply("513", "Message too big"); return; } force_rport(); if(is_method("NOTIFY")){ sl_send_reply("200", "Ok"); return; } if(is_method("SUBSCRIBE|PUBLISH")){ sl_send_reply("200", "Ok"); return; } # -- Enable Accounting -- # setflag(2); if(nat_uac_test("3")){ if(is_method("REGISTER") || !is_present_hf("Record-Route")){ fix_nated_register(); } else { fix_nated_contact(); } force_rtp_proxy(); setbflag(5); } if(!is_method("REGISTER")){ record_route(); } if(is_method("BYE|CANCEL")){ unforce_rtp_proxy(); } if(loose_route()){ if(!is_present_hf("P-hint")){ append_hf("P-hint: rr-enforced\r\n"); } route(1); return; }