rlm_perl CLONE under freeradius 3.x
Eugene Grosbein
fr at grosbein.net
Sat Apr 25 18:14:02 CEST 2015
On Sat, Apr 25, 2015 at 10:46:05AM +0800, d tbsky wrote:
> hi:
> I am writing rlm_perl script under freeradius 3.0.4 which comes
> with RHEL 7.1.
> and I am confused about how thread working with rlm_perl.
> according to the old message at email list, if I want every radius
> thread to have their own unique variable, I should put the variable
> at "CLONE" function like below:
>
> our ($var);
> CLONE {
> $var = '';
> }
>
> but after testing, I found even if the variable is not put at the
> CLONE function, they are still unique to each thread. may I ask what
> is the correct method to make global thread shared variable and thread
> unique variable under rlm_perl ?
All variables are thread unique unless explicitly decrlared ":shared", e.g.:
require 5.10.0;
use threads;
use threads::shared;
our $href :shared;
sub CLONE_SKIP {
$href = shared_clone({});
}
This way, all threads have access to single hash reference $href,
so they need to use lock() or similar ways to serialize access to it.
Simple scalars do not need shared_clone() to initialize, though.
More information about the Freeradius-Users
mailing list