Hi,

On Tue, Sep 13, 2011 at 8:46 AM, Daniel-Constantin Mierla <miconda@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?

Cheers
Ozren


On 9/12/11 3:29 PM, Ozren Lapcevic wrote:

I have attached log file. I have single onreply_route[REPLY_ONE] used for all replies. Grep "REPLY_ONE, FLAGS" to find where the flags are printed. Grep "FAIL FORK" for logs from failure route.

Let me know if you need anything else.

Cheers
Ozren

--
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