]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 1246413 - Email::Address caches all email addresses
authorDylan Hardison <dylan@mozilla.com>
Wed, 10 Feb 2016 16:48:45 +0000 (11:48 -0500)
committerDylan Hardison <dylan@mozilla.com>
Wed, 10 Feb 2016 16:48:45 +0000 (11:48 -0500)
extensions/UserProfile/Extension.pm

index 4fe1436c0c835423421c7bbbde8eba1abec3ec3c..2c17a2d9fe27b3df8c065c9e5594b381366de833 100644 (file)
@@ -19,6 +19,7 @@ use Bugzilla::User;
 use Bugzilla::Util qw(datetime_from time_ago);
 use Email::Address;
 use Scalar::Util qw(blessed);
+use List::MoreUtils qw(any);
 
 our $VERSION = '1';
 
@@ -36,7 +37,12 @@ BEGIN {
 
 sub _user_last_activity_ts         { $_[0]->{last_activity_ts}                }
 sub _user_last_statistics_ts       { $_[0]->{last_statistics_ts}              }
-sub _user_address                  { Email::Address->new(undef, $_[0]->email) }
+sub _user_address {
+    my $mode = Bugzilla->usage_mode;
+
+    Email::Address->disable_cache if any { $mode == $_ } USAGE_MODE_CMDLINE, USAGE_MODE_TEST, USAGE_MODE_EMAIL;
+    return Email::Address->new(undef, $_[0]->email);
+}
 
 sub _user_set_last_activity_ts     {
     my ($self, $value) = @_;
@@ -66,6 +72,8 @@ sub _user_clear_last_statistics_ts {
 # hooks
 #
 
+sub request_cleanup { Email::Address->purge_cache }
+
 sub bug_after_create {
     my ($self, $args) = @_;
     $self->_bug_touched($args);