[asterisk-users] ForkCDR
Michael Collins
mcollins at fcnetwork.com
Tue May 27 17:57:27 CDT 2008
> -----Original Message-----
> From: asterisk-users-bounces at lists.digium.com [mailto:asterisk-users-
> bounces at lists.digium.com] On Behalf Of Steve Murphy
> Sent: Tuesday, May 27, 2008 11:12 AM
> To: asterisk-users
> Subject: [asterisk-users] ForkCDR
>
> Hello, CDR fans!
I guess not too many CDR fans out there! :)
>
> I'm looking at some issues brought forward over time:
>
> 12726/10668: someone wants me to revert the changes I made via
> bug 10668, last Sept; (that's
> they are messing him up. And I didn't do the change
> suggested in ForkCDR, for fear of lousing up
> folks depending on current behavior. Which probably
sparked:
> 11721 : ForkCDR's not yielding CDR with proper duration/billsec.
>
> Add to that some calls I've gotten recently from "dude" on forkCDR
> messing up the answer() times.
>
> My thoughts: Whatever ForkCDR was really, really meant to do, since
> not well documented, I have fear of touching, but, I do have
suggestions
> to fix various clearly erroneous behaviors, and in order to suppress
> the number of complaints, I propose this:
>
> Adding ALL suggested changes in behavior to ForkCDR, but each
> with a controlling option. By Default, ForkCDR() will behave the
> way it always has.
>
> Right now, ForkCDR() has the v option, which carries forward the
> variables on the old CDR.
>
> I propose adding:
>
> a - update the answer time on the NEW CDR just after it's been inited.
> The new CDR may have been answered already, the reset that forkcdr
> does will erase the answer time. This will bring it back, but
> the answer time will be a copy of the fork/start time. It will
> only do this if the initial cdr was indeed already answered.
> D - Copy the disposition forward from the old cdr, after the
> init.
> d - Clear the dstchannel on the new CDR after reset.
> e - end the original CDR. Do this after all the necc. data
> is copied from the original CDR to the new forked CDR.
> R - do NOT reset the new cdr.
> s(name=val) - Set the CDR var 'name' in the original CDR, with value
> 'val'.
> (you can do the same thing on the new cdr with the CDR()
> func.)
> (the current 'v' option will not change)
>
>
> Most of these came from "arkadia" via the bug tracker,
> with a and D being points from "dude". Using R may make
> a and D useless; but there may be reasons to not use R
> instead...
>
> The complaints about billsec/duration not being set are
> because one of the necessary times aren't in the CDR,
> either start, answer or end.
>
> All this will be done in trunk; but my real question is:
>
> Can I apply this fix to 1.4 and 1.6.0 also? It may be an enhancement,
> but it does *fix* problems folks are having in 1.4 etc!
> Things that make this a little easier to swallow:
> a. forkCDR behavior for existing users WILL NOT CHANGE. Users
> have to add options to the call to get the new behavior.
> b. No existing users should be hurt by the enhancement. If they
> found a magic way to make it do what needed to be done,
> they will not be inconvenienced, unless they have stray
> accidental options in their forkcdr() calls in their dialplan,
> that just happen to line up with an option that will be added.
> I don't see this as a major problem.
>
> My best explanation for all this is that forkCDR, and how it was
> *meant* to be used, was never documented. If it had been, folks
> would have been spared a lot of grief. Because I never could quite
> picture the intended flow of usage and events from the dialplan,
> I couldn't preserve it, and users were left to try to decode
> for themselves how to make it work considering the other
> constraints the CDR system places on them.
>
> For instance, in 1.2, forkCDR didn't end the previous CDR,
> or have any options for that. The 1.4 (and trunk version
> for that matter) are pretty faithful to the 1.2 version of
> forkCDR.
>
> I think the usage of ForkCDR has far surpassed its original
intentions,
> and the things it did by default are not the best for all the
> scenarios folks want to use it in, so I think the time has come to
> try to put enough options into it so that 1.4 and 1.6.x users
> can get what they need out of it.
>
> So, give me your opinions. Is it OK with the community to backport
> this enhancement into 1.4 and 1.6.0?
If you *PROMISE* that the change won't affect the default behavior then
I can't see any real reason not to implement in both 1.4 and 1.6.
-MC
>
> And, are the above options enough for you all? Any you'd like to see
> added/removed from the above list?
>
> BTW, CEL is moving along as well.
>
> murf
>
> --
> Steve Murphy
> Software Developer
> Digium
More information about the asterisk-users
mailing list