Dear list members
I'm using kamailio 3 and the problem that I'm facing is that when a call is rejected by global blacklist, kamailio does not generate an accounting record. Is this normal behavior or I need to configure something somewhere ?
Below are parts of the config file
# ----- acc params ----- modparam("acc", "early_media", 1) modparam("acc", "report_ack", 1) modparam("acc", "report_cancels", 1) modparam("acc", "detect_direction", 0) modparam("acc", "failed_transaction_flag", 3) #!ifdef WITH_ACCDB modparam("acc", "db_flag", 1) modparam("acc", "db_missed_flag", 2) modparam("acc", "db_url", "mysql://username:password@localhost/openser") modparam("acc", "db_extra",
"src_user=$fU;src_domain=$fd;dst_ouser=$tU;dst_user=$rU;dst_domain=$rd") #!endif
---------------------- if (has_totag()) { # sequential request withing a dialog should # take the path determined by record-routing if (loose_route()) { if (is_method("BYE")) { setflag(1); # do accounting ... setflag(3); # ... even if the transaction fails }
------------------------- if (is_method("INVITE")) { setflag(1); # do accounting setflag(2); # log missed calls setflag(3); # log failed calls setflag(4); # do siptrace setflag(5); # log dialog
------------- route[name] {
# --- Remove # or %23 from rU --- bm_start_timer("hash_remove"); if($rU =~ "^.*%+") { xlog("------- The number contains %23 ---- "); $rU = $(rU{re.subst,/^(.*)%23(.*)/\1\2/}); xlog(" ------- The perl $rU ------- "); }
if($rU =~ "^.*#+") { xlog("------- The number contains # ----"); $rU = $(rU{re.subst,/^(.*)#(.*)/\1\2/}); xlog("------- The perl $rU ------- "); } bm_log_timer("hash_remove"); # --- PDT section ------ get service prefix to be appended before is send out bm_start_timer("pdt_lookup"); if(!prefix2domain("2", "0")) { sl_send_reply("404", "Prefix not found"); exit; } $var(dstgrp) = 0; $var(dstgrp) = $(rd{s.int}); if($var(dstgrp)==0) { sl_send_reply("404", "Service not found"); exit; } $avp(s:service_prefix) = $var(dstgrp); xlog("--$rU----------- $avp(s:service_prefix) --- PDT ---------\n");
bm_log_timer("pdt_lookup");
# --- DialPlan section --- get the routing group id
xlog("----- The rU is $rU before DP -----\n"); bm_start_timer("dialplan_lookup"); if(dp_translate("1", "$rU/$rU")) { $avp(s:dstgrp) = $(var(dpattrs){s.int}); xlog("----- The destination Drouting GroupID is $avp(s:dstgrp) -----\n "); }
bm_log_timer("dialplan_lookup"); xlog("----- The rU is $rU after DP -----\n");
# --- Global Blacklist section --- bm_start_timer("blacklist_lookup"); if(!check_blacklist("globalblacklist")){ xlog("----- The number is blacklisted globaly! -----"); sl_send_reply("403", "Forbidden"); exit; } bm_log_timer("blacklist_lookup"); # --- Dynamic routing section --- route the call based on the routing group id bm_start_timer("drouting_lookup"); if (!do_routing("$avp(s:dstgrp)")) { xlog("----- DRouting don't match dstgrp $avp(s:dstgrp) -----\n");
sl_send_reply("404","Route Not Found -$rU-"); exit; } bm_log_timer("drouting_lookup"); xlog("-----DRouting with $rU and $avp(s:dstgrp) -and $avp(s:service_prefix)----\n"); # Append service prefix in front of number $ru = "sip:" + $avp(s:service_prefix) + $rU + "@" + $rd;
xlog(" ------ $ru ----$rU- $avp(s:user)---\n");
t_on_failure("FAIL_ONE"); route(RELAY); exit; return; }
Regards
Panagiotis