[asterisk-users] MySql and custom CDR

Steve Edwards asterisk.org at sedwards.com
Fri Sep 11 16:45:30 CDT 2009


On Fri, 11 Sep 2009, Steve Edwards wrote:

>> I'm a 1.2 Luddite, but I found cdr_addon_mysql.c pretty easy to hack 
>> on. For example, I added a channel variable named PRODUCT. Here's the 
>> code I used:
>>
>>  	channel_pointer = ast_get_channel_by_name_locked(channel);
>>  	product_pointer = pbx_builtin_getvar_helper(channel_pointer
>>  		, "PRODUCT");
>>
>> and then add ",product", ",'%s'" and product_pointer to the sprintf 
>> that builds the insert statement.

On Fri, 11 Sep 2009, Tilghman Lesher wrote:

> 1) There's no guarantee that the channel will still be alive at the time 
> the CDR is posted.  In fact, if you're doing bulk posting of CDRs, it's 
> pretty much guaranteed the channel will be gone.

I do check for ast_get_channel_by_name_locked() and 
pbx_builtin_getvar_helper() returning 0 and syslog it. It never happens in 
this environment. I just didn't include it in the snippet.

> 2) CDR variables were created for exactly this reason -- they are 
> allocated to the CDR, not the channel, and thus, they are available even 
> after the channel is destroyed.  They are available to use in 1.2.

Well shame on me. I assumed that the CDR function only operated on the 
"standard" set of CDR variables. Thanks for the clarification. That would 
clean up that section of code a bit. Unfortunately I doubt the client will 
pay for fixing something that isn't failing.

So if a CDR exists after the channel is destroyed, when is the CDR 
destroyed?

-- 
Thanks in advance,
-------------------------------------------------------------------------
Steve Edwards       sedwards at sedwards.com      Voice: +1-760-468-3867 PST
Newline                                              Fax: +1-760-731-3000



More information about the asterisk-users mailing list