That is because you don't use Record-route. You have to use
it in order to enforce reouting of subsequent requests
through SER. Otherwise, they are routed directly between
end-devices, that's how SIP works. The missing script
action is bellow, I will document this issue in user's
guide.
-Jiri
At 04:38 AM 1/8/2003, Joe_chen wrote:
hi,
i have met the same problem with acc. i can get the invite message for accounting,but i
can't get the bye message, i also capture the udp packages on ser server, i use MSN
for UA, i find the sip messeges like: invite,100 trying,180 ringing ,200 ok(for
invite),but when i hangup, there are not bye message, it's like sending bye message
from UA to UA directly,while not going throug ser server,so there is not BYE message for
accounting, is it true?
how to get the bye message for accounting? please help.
my ser.cfg is like:
..
loadmodule "/usr/local/lib/ser/modules/mysql.so"
loadmodule "/usr/local/lib/ser/modules/sl.so"
loadmodule "/usr/local/lib/ser/modules/acc.so"
#loadmodule "/usr/local/lib/ser/modules/auth.so"
loadmodule "/usr/local/lib/ser/modules/print.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"
..
modparam("acc", "db_url","sql://ser:heslo@localhost/ser")
modparam("acc","report_ack",1)
modparam("acc","log_level",1)
modparam("acc", "acc_flag", 1 )
modparam("acc", "missed_flag", 3 )
# -- tm params --
modparam("tm", "fr_timer", 10 )
modparam("tm", "fr_inv_timer", 20 )
modparam("tm", "wt_timer", 10 )
..
route{
# initial sanity checks -- messages with
# max_forwars==0, or excessively long requests
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
break;
};
if (len_gt( max_len )) {
sl_send_reply("513", "Message too big");
break;
};
# Do strict routing if pre-loaded route headers present
rewriteFromRoute();
# 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") {
# Uncomment this if you want to use digest authentication
# if (!www_authorize("192.168.139.125",
"subscriber")) {
# www_challenge("192.168.139.125",
"0");
# break;
# };
save("location");
break;
};
# native SIP destinations are handled using our USRLOC DB
if (!lookup("location")) {
sl_send_reply("404", "Not Found");
break;
};
};
# set for accounting (the same value as in acc_flag!)
if (method=="INVITE" || method=="BYE"){
setflag(1);
# ... and also report on missed calls ... note that reporting
# on missed calls is mutually exclusive with silent C timer
#
setflag(3);
};
# enforce routing of the whole signaling through proxy
if (method=="INVITE") {
addRecordRoute();
};
# forward to current uri now
if (!t_relay()) {
sl_reply_error();
};
}
thanks!
_______________________________________________
Serusers mailing list
serusers(a)lists.iptel.org
http://lists.iptel.org/mailman/listinfo/serusers
--
Jiri Kuthan
http://iptel.org/~jiri/