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; ...@@ -12,7 +12,6 @@ use strict;
use warnings; use warnings;
use Bugzilla::Error; use Bugzilla::Error;
use Bugzilla::Util qw(trick_taint);
use Scalar::Util qw(blessed); use Scalar::Util qw(blessed);
use URI::Escape; use URI::Escape;
...@@ -243,51 +242,7 @@ sub _get { ...@@ -243,51 +242,7 @@ sub _get {
$key = $self->_encode_key($key) $key = $self->_encode_key($key)
or return; or return;
my $value = $self->{memcached}->get($key); return $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);
}
}
} }
sub _delete { sub _delete {
...@@ -340,9 +295,7 @@ L<Bugzilla::Memcached> provides an interface to a Memcached server/servers, with ...@@ -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 ability to get, set, or clear entries from the cache.
The stored value must be an unblessed hashref, unblessed array ref, or a The stored value must be an unblessed hashref, unblessed array ref, or a
scalar. Currently nested data structures are supported but require manual scalar.
de-tainting after reading from Memcached (flat data structures are automatically
de-tainted).
All values are stored in the Memcached systems using the prefix configured with 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 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