Postpone credential cache pool creation until it is used.

1.x
Adirelle 2012-04-04 17:09:52 +02:00
parent 2f23e20ed0
commit 7f3d4406e1
1 changed files with 7 additions and 12 deletions

View File

@ -261,6 +261,7 @@ sub RedmineDbPass { set_val('DbPass', @_); }
sub RedmineProject { set_val('Project', @_); }
sub RedmineReadPermissions { push_val('ReadPermissions', @_); }
sub RedmineWritePermissions { push_val('WritePermissions', @_); }
sub RedmineCacheCredsMax { set_val('CacheCredsMax', @_); }
sub RedmineCacheCredsMaxAge { set_val('CacheCredsMaxAge', @_); }
sub RedmineDenyAnonymous { set_val('DenyAnonymous', @_); }
sub RedmineDenyNonMember { set_val('DenyNonMember', @_); }
@ -273,17 +274,6 @@ sub RedmineDbWhereClause {
}
}
sub RedmineCacheCredsMax {
my ($cfg, $parms, $arg) = @_;
if ($arg) {
unless($cfg->{CachePool}) {
$cfg->{CachePool} = APR::Pool->new;
$cfg->{CacheCreds} = APR::Table::make($cfg->{CachePool}, $arg);
}
$cfg->{CacheCredsMax} = $arg;
}
}
sub set_val {
my ($key, $cfg, $parms, $arg) = @_;
$cfg->{$key} = $arg;
@ -589,7 +579,7 @@ sub cache_get {
my($r, $key) = @_;
my $cfg = get_config($r);
return unless $cfg->{CacheCredsMax};
return unless $cfg->{CacheCredsMax} && $cfg->{CacheCreds};
my $time = $cfg->{CacheCreds}->get($key)
or return 0;
@ -609,6 +599,11 @@ sub cache_set {
my $cfg = get_config($r);
return unless $cfg->{CacheCredsMax};
unless($cfg->{CacheCreds}) {
$cfg->{CachePool} = APR::Pool->new;
$cfg->{CacheCreds} = APR::Table::make($cfg->{CachePool}, $cfg->{CacheCredsMax});
}
if($cfg->{CacheCredsCount} >= $cfg->{CacheCredsMax}) {
$cfg->{CacheCreds}->clear;
$cfg->{CacheCredsCount} = 0;