Commit a0a047d0 authored by Dylan Hardison's avatar Dylan Hardison

Bug 1274764 - Increasing memcached performance is possible because…

Bug 1274764 - Increasing memcached performance is possible because Cache::Memcached::Fast does not need detainting r=dkl,a=dylan
parent 7ccda089
......@@ -12,7 +12,6 @@ use strict;
use warnings;
use Bugzilla::Error;
use Bugzilla::Util qw(trick_taint);
use Scalar::Util qw(blessed);
use URI::Escape;
......@@ -243,51 +242,7 @@ sub _get {
$key = $self->_encode_key($key)
or return;
my $value = $self->{memcached}->get($key);
return unless defined $value;
# detaint returned values
# hashes and arrays are detainted just one level deep
if (ref($value) eq 'HASH') {
_detaint_hashref($value);
}
elsif (ref($value) eq 'ARRAY') {
foreach my $value (@$value) {
next unless defined $value;
# arrays of hashes and arrays are common
if (ref($value) eq 'HASH') {
_detaint_hashref($value);
}
elsif (ref($value) eq 'ARRAY') {
_detaint_arrayref($value);
}
elsif (!ref($value)) {
trick_taint($value);
}
}
}
elsif (!ref($value)) {
trick_taint($value);
}
return $value;
}
sub _detaint_hashref {
my ($hashref) = @_;
foreach my $value (values %$hashref) {
if (defined($value) && !ref($value)) {
trick_taint($value);
}
}
}
sub _detaint_arrayref {
my ($arrayref) = @_;
foreach my $value (@$arrayref) {
if (defined($value) && !ref($value)) {
trick_taint($value);
}
}
return $self->{memcached}->get($key);
}
sub _delete {
......@@ -340,9 +295,7 @@ L<Bugzilla::Memcached> provides an interface to a Memcached server/servers, with
the ability to get, set, or clear entries from the cache.
The stored value must be an unblessed hashref, unblessed array ref, or a
scalar. Currently nested data structures are supported but require manual
de-tainting after reading from Memcached (flat data structures are automatically
de-tainted).
scalar.
All values are stored in the Memcached systems using the prefix configured with
the C<memcached_namespace> parameter, as well as an additional prefix managed
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment