Hi,
About 3 weeks ago i upgraded one of my production server
with latest stable kamailio version 4.2.1-fad00a. Now i am
getting a lot of complaints about missing CDR events in ACC
table. I observe following problems,
1. There are only BYE records in acc table, no record for
INVITE or ACK.
2. In kamailio logs when ACK is received against 200 OK
response for INVITE, i see following errors,
--
ERROR: <core> [parser/parse_from.c:113]:
parse_from_uri(): failed to parse From uri
ERROR: pv [pv_core.c:434]: pv_get_xto_attr(): cannot parse
From URI
NOTICE: <script>: [udp:<null>@
1.0.0.127:5060]:
Call from '
you@kamailio.org' to '
you@kamailio.org'
has been hanged up by '<null>' at '1419364717.255484'
--
Of course all these errors are bogus, I have checked all
headers in ACK (not just FROM header), they all seem perfectly
fine and valid.
3. Then the dialog times out,
--
WARNING: dialog [dlg_handlers.c:1440]: dlg_ontimeout():
timeout for dlg with CallID
'6D8BD23CAC65AE3C1DE1D0B531F87B8CFEAA9CB9' and tags
'1D3ECD34F5731AB845BA3064AC95BB2D'
'7f55e81e0630-100007f-13c4-6009-2440a4-5fa31570-2440a4'
--
4. Any further sequential requests complain about "unable
to find dialog", e.g.
--
NOTICE: <script>: Sequencial 'BYE' request received from
caller
ERROR: uac [replace.c:591]: restore_uri(): new URI [] shorter
than old URI [
sip:00xxxxxxxxxx@sip.domain.com]
WARNING: dialog [dlg_handlers.c:1174]: dlg_onroute(): unable
to find dialog for BYE with route param '5ae1.d595'
[7845:22877]
--
5. However the acc record for BYE is written to db and log
file,
--
NOTICE: acc [acc.c:318]: acc_log_request(): ACC: transaction
answered:
timestamp=1419364760;method=BYE;from_tag=7f55e81e0630-100007f-13c4-6009-2440a4-5fa31570-2440a4;to_tag=1D3ECD34F5731AB845BA3064AC95BB2D;call_id=6D8BD23CAC65AE3C1DE1D0B531F87B8CFEAA9CB9;code=200;reason=OK;src_user=00xxxxxxxxxx;src_domain=
sip.domain.com;src_ip=xx.xx.xx.xx;dst_ouser=+1xxxxxxxxxx;dst_user=1xxxxxxxxxx;dst_domain=yy.yy.yy.yy
--
The same config was working fine with older version
4.2.0-97cab8. The kamailio config i am using is pretty much
standard,
--
#!define FLT_ACC 1
#!define FLT_ACCMISSED 2
#!define FLT_ACCFAILED 3
#!define FLT_DLG 4
...
modparam("acc", "early_media", 1)
modparam("acc", "report_ack", 1)
modparam("acc", "report_cancels", 1)
modparam("acc", "detect_direction", 1)
modparam("acc", "log_flag", FLT_ACC)
modparam("acc", "log_missed_flag", FLT_ACCMISSED)
modparam("acc", "failed_transaction_flag", FLT_ACCFAILED)
# log to db
modparam("acc", "db_flag", FLT_ACC)
modparam("acc", "db_missed_flag", FLT_ACCMISSED)
modparam("acc", "db_url", "DBURL")
...
request_route {
# per request initial checks
route(REQINIT);
# NAT detection
route(NATDETECT);
# handle requests within SIP dialogs
route(WITHINDLG);
# CANCEL processing
if (is_method("CANCEL")) {
if (t_check_trans()) {
t_relay();
};
exit;
};
#### only initial requests (no To tag) ####
t_check_trans();
....
# account only INVITEs
if (is_method("INVITE")) {
setflag(FLT_DLG); # create dialog
setflag(FLT_ACC); # do accounting
setflag(FLT_ACCFAILED); # ... even if the transaction
fails
$avp(dlg_timeout) = 60;
dlg_manage();
....
}
--
Any ideas why its happening? Since it is 3 weeks old so may
be problem has already been spotted and fixed by someone else.
Otherwise let me know how can i provide more info to help fix
this issue.
Thank you.