summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorivan <ivan>2009-02-07 19:34:10 +0000
committerivan <ivan>2009-02-07 19:34:10 +0000
commit1411da26cb9204d8f239ace310d2c4da503046b2 (patch)
tree6b51c17d908be39c925529cd2066dd97e5f73870
parent0bd7bcd14f955f99fd0a63213a022fb1ea92145e (diff)
don't look up encryption config every search, this should help perf a lot with database config in 1.9
-rw-r--r--FS/FS/Record.pm11
1 files changed, 6 insertions, 5 deletions
diff --git a/FS/FS/Record.pm b/FS/FS/Record.pm
index b856aea10..cbd6ad860 100644
--- a/FS/FS/Record.pm
+++ b/FS/FS/Record.pm
@@ -2,7 +2,7 @@ package FS::Record;
use strict;
use vars qw( $AUTOLOAD @ISA @EXPORT_OK $DEBUG
- $conf $me
+ $conf $conf_encryption $me
%virtual_fields_cache
$nowarn_identical $no_update_diff $no_check_foreign
);
@@ -44,10 +44,13 @@ my $rsa_loaded;
my $rsa_encrypt;
my $rsa_decrypt;
+$conf = '';
+$conf_encryption = '';
FS::UID->install_callback( sub {
eval "use FS::Conf;";
die $@ if $@;
$conf = FS::Conf->new;
+ $conf_encryption = $conf->exists('encryption');
$File::CounterFile::DEFAULT_DIR = $conf->base_dir . "/counters.". datasrc;
} );
@@ -403,10 +406,8 @@ sub qsearch {
# Check for encrypted fields and decrypt them.
## only in the local copy, not the cached object
- if ( $conf && $conf->exists('encryption') # $conf doesn't exist when doing
- # the initial search for
- # access_user
- && eval 'defined(@FS::'. $table . '::encrypted_fields)') {
+ if ( $conf_encryption
+ && eval 'defined(@FS::'. $table . '::encrypted_fields)' ) {
foreach my $record (@return) {
foreach my $field (eval '@FS::'. $table . '::encrypted_fields') {
# Set it directly... This may cause a problem in the future...