Hi,
I have found recently that in order to detect retransmits I have to create a transaction explicitly when the request comes in: force_rport(); if(!t_check_trans()) t_newtran(); sl_send_reply("100", "Trying"); xlog("L_INFO", "New request - $ci\n");
it appears like there are carriers or UAs that do not honor the T1 retransmission interval retransmit the INVITE sooner than proxy creates a transaction in t_relay(). And since we are counting concurrent calls, we count the same call multiple times, which is not good.
But with this patch we've faced another sporadic problem - if the transaction is created beforehand the accounting record is lost.. we use acc_db mode and set flag to account the transaction. And there are no errors in kamailio log but no insert into acc in mysql binlog either. I wasn't successful reproducing it in the lab systems with identical setup.
Is anybody here perhaps aware of some limitation in acc module or callbacks which makes a transaction created beforehand not accountable?
On a related note, it could make sense to create a transaction implicitly if dlg_manage() is called to avoid counting same call many times, I just don't know yet how common this issue is in real life.