[RADIATOR] Using Storable in a hook
Jared Watkins
JWatkins at acninc.com
Wed Jan 25 11:15:17 CST 2012
I've tried storing the data a few different ways.. and I always end up with the same 3 byte value stored in the database... which sounds like a memory pointer rather than data. I found a specific reference under DBD:Pg about binary data.. and it suggests that you have to do an explicit bind and tell it you are passing binary data like so:
bind_param(1, $cdr, { pg_type => PG_BYTEA })
You don't expose the DBI stuff directly though.. so it looks like that would require a change or code addition to your sql module to allow separate calls to prepare, bind, execute.
I've not had time to setup a totally separate test to take Radiator out of the equation.. but that's my best guess as to why it's not working at the moment.
J
On Jan 25, 2012, at 8:01 AM, Heikki Vatiainen wrote:
> On 01/25/2012 05:44 AM, Jared Watkins wrote:
>
>> I figured out that I have to call it directly like Storable::nfreeze(\%x) but the error I was getting for other way was:
>>
>> Bizarre copy of HASH in refgen at
>>
>> Now.. I'm passing the value in as a bound parameter in the hook and according to a length call on the variable.. it's going in with an average length of 1450 bytes. However.. when I fetch it from the database (postgres) I'm only getting back 3 bytes.
>>
>> I'm using just the attributes list out of the $p variable by $p->{'Attributes'}.
>
> Try @{$p->{Attributes}} if you want to access the attribute array
> instead of reference. Maybe you are already doing this, but I thought
> I'd check. Also Data::Dumper has sometimes been quite helpful figuring
> out how various items are composed.
>
>> I've done binary data through DBI before (to mysql) without a problem.. so I'm not sure where it might be getting lost here.
>
> Hard to tell. I have not tried this myself.
>
> Please keep us posted how it goes.
>
> Thanks!
> Heikki
>
>> Thanks,
>> Jared
>>
>>
>> On Jan 24, 2012, at 5:59 PM, Heikki Vatiainen wrote:
>>
>>> On 01/24/2012 10:44 PM, Jared Watkins wrote:
>>>
>>>> I'm seeing some weird errors and behavior trying to use the freeze method from Storable. Is there a special trick to making it work in hook code?
>>>
>>> I have not used Storable myself, but if you could reply with some
>>> examples I can take a a look.
>>>
>>> Note that some of the data structures, such as radius requests ($p
>>> usually) are very large. You could see e.g. with Data::Dumper to see
>>> what they look like.
>>>
>>>> I saw a reference on the cpan page for special handling when used in a 'Safe' compartment.. is that what's happening here? For reference.. for development/debugging I'm attempting to serialize and store (in db field) a hash I'm creating with all the per packet name-value pairs.
>>>
>>> Hard to tell. Examples would be useful :)
>>>
>>> Thanks!
>>> Heikki
>>>
>>> --
>>> Heikki Vatiainen <hvn at open.com.au>
>>>
>>> Radiator: the most portable, flexible and configurable RADIUS server
>>> anywhere. SQL, proxy, DBM, files, LDAP, NIS+, password, NT, Emerald,
>>> Platypus, Freeside, TACACS+, PAM, external, Active Directory, EAP, TLS,
>>> TTLS, PEAP, TNC, WiMAX, RSA, Vasco, Yubikey, MOTP, HOTP, TOTP,
>>> DIAMETER etc. Full source on Unix, Windows, MacOSX, Solaris, VMS,
>>> NetWare etc.
>>
>> _______________________________________________
>> radiator mailing list
>> radiator at open.com.au
>> http://www.open.com.au/mailman/listinfo/radiator
>
>
> --
> Heikki Vatiainen <hvn at open.com.au>
>
> Radiator: the most portable, flexible and configurable RADIUS server
> anywhere. SQL, proxy, DBM, files, LDAP, NIS+, password, NT, Emerald,
> Platypus, Freeside, TACACS+, PAM, external, Active Directory, EAP, TLS,
> TTLS, PEAP, TNC, WiMAX, RSA, Vasco, Yubikey, MOTP, HOTP, TOTP,
> DIAMETER etc. Full source on Unix, Windows, MacOSX, Solaris, VMS,
> NetWare etc.
More information about the radiator
mailing list