[SR-Users] Accounting only the 2nd branch of missed serial forked call
Daniel-Constantin Mierla
miconda at gmail.com
Fri Sep 23 13:41:07 CEST 2011
Hello,
can you add a debug message to acc module, compile, reinstall and test
again? Send again the debug messages with parameter debug=4
I am attaching the patch for master branch, should be easy to apply to
3.1 as well.
Cheers,
Daniel
On 9/13/11 11:33 AM, Daniel-Constantin Mierla wrote:
> Hello,
>
> On 9/13/11 11:21 AM, Ozren Lapcevic wrote:
>> Hi,
>>
>> On Tue, Sep 13, 2011 at 8:46 AM, Daniel-Constantin Mierla
>> <miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>>
>> Hello,
>>
>> just to be sure, you used flag 2 for missed calls, right? I can
>> see it set in onreply_route.
>>
>>
>>
>> Yes, I've used #!define FLT_ACCMISSED 2 and setflag(FLT_ACCMISSED)
>> for missed calls. I checked the flag in onreply_route and failure
>> route and they are properly set.
>>
>> That means the flags are ok now, the issue seems to be in other
>> place. You don't set any of the accounting flags in request route
>> block, isn't it? I mean, the first accounting flag (like
>> accounting answered calls or missed calls) is set in failure
>> route. If so, the acc does not register itself for a tm callback
>> that is used for handling accounting events.
>>
>>
>>
>> Actually, I do set other accounting flags in following routes:
>>
>> #!define FLT_ACC 1
>> #!define FLT_ACCMISSED 2
>> #!define FLT_ACCFAILED 3
>>
>> #MAIN ROUTE
>>
>> if (is_method("INVITE")) setflag(FLT_ACC);
>>
>> route[WITHINDLG] {
>> if (has_totag()) {
>> if (loose_route()) {
>> if (is_method("BYE")) {
>>
>> setflag(FLT_ACC); # do accounting ...
>> setflag(FLT_ACCFAILED); # ... even if
>> the transaction fails
>> }
>> .....
>>
>> route[LOCATION] {
>> # only for people who don't have multiple contacts (no serial
>> forking, not used in reported scenario)
>>
>> if ( is_method("INVITE") && !(isflagset(FLT_USRPREF)))
>> setflag(FLT_ACCMISSED);
>> }
>>
>> #called only for serial forked calls
>> failure_route[FAIL_FORK] {
>> .....
>> # if second branch set flag
>> setflag(FLT_ACCMISSED);
>> t_flush_flags();
>> ....
>> # if 3rd branch (voicemail) reset flag
>> resetflag(FLT_ACCMISSED);
>> t_flush_flags();
>> ....
>> }
>>
>>
>> Now that you've mentioned it, I've removed all other setflag()
>> functions and kept only the ones in FAIL_FORK failure route. There is
>> still no logging of the second branch.
>>
>> Try to set acc flag for writing to syslog in route {...}, you can
>> reset it in failure route or onreply_route. Of course, this as an
>> workaround for now, I will look for a proper solution in case
>> this is the problem.
>>
>>
>>
>> I'm not sure I can implement needed logic this way. I don't want to
>> account 1st branch. If I set FLT_ACCMISSED flag in route {...} and
>> reset it in on_reply and failure route, it will be too late, the
>> missed call will already be accounted. Or, I'm missing something?
>
> It meant setting FLT_ACC (not FLT_ACCMISSED) in main route and reset
> it on onreply_route in case you didn't want to account successful
> transactions at all. But I see you actually set the acc flag in route
> block ... probably I have to dig further in the logs for more details.
> So far it looked like an issue if no acc module flags were set in
> request route block.
--
Daniel-Constantin Mierla -- http://www.asipto.com
Kamailio Advanced Training, Oct 10-13, Berlin: http://asipto.com/u/kat
http://linkedin.com/in/miconda -- http://twitter.com/miconda
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20110923/11994705/attachment.htm>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: acc-dbg-callback.patch
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20110923/11994705/attachment.txt>
More information about the sr-users
mailing list