diff options
author | Frédéric Buclin <LpSolit@gmail.com> | 2014-10-16 18:09:15 +0200 |
---|---|---|
committer | Frédéric Buclin <LpSolit@gmail.com> | 2014-10-16 18:09:15 +0200 |
commit | 7ce5b04d20684101748812cf2bd5e7d6275bd5e7 (patch) | |
tree | 590882b1275ec3729b8fa13ed5b040da3851b234 | |
parent | b1bdb0ed35a75233edc1a7c59b697bb08adc38c7 (diff) | |
download | bugzilla-7ce5b04d20684101748812cf2bd5e7d6275bd5e7.tar.gz bugzilla-7ce5b04d20684101748812cf2bd5e7d6275bd5e7.tar.xz |
Bug 1082557: Use a persistent connection to the SMTP server for improved performance
r=dylan a=glob
-rw-r--r-- | Bugzilla.pm | 7 | ||||
-rw-r--r-- | Bugzilla/Mailer.pm | 5 |
2 files changed, 8 insertions, 4 deletions
diff --git a/Bugzilla.pm b/Bugzilla.pm index 2347a8ae8..048e72d48 100644 --- a/Bugzilla.pm +++ b/Bugzilla.pm @@ -659,13 +659,16 @@ sub memcached { # Per-process cleanup. Note that this is a plain subroutine, not a method, # so we don't have $class available. sub _cleanup { - my $main = Bugzilla->request_cache->{dbh_main}; - my $shadow = Bugzilla->request_cache->{dbh_shadow}; + my $cache = Bugzilla->request_cache; + my $main = $cache->{dbh_main}; + my $shadow = $cache->{dbh_shadow}; foreach my $dbh ($main, $shadow) { next if !$dbh; $dbh->bz_rollback_transaction() if $dbh->bz_in_transaction; $dbh->disconnect; } + my $smtp = $cache->{smtp}; + $smtp->disconnect if $smtp; clear_request_cache(); # These are both set by CGI.pm but need to be undone so that diff --git a/Bugzilla/Mailer.pm b/Bugzilla/Mailer.pm index 3c8815306..01e0dc255 100644 --- a/Bugzilla/Mailer.pm +++ b/Bugzilla/Mailer.pm @@ -25,7 +25,7 @@ use Encode qw(encode); use Encode::MIME::Header; use Email::MIME; use Email::Sender::Simple qw(sendmail); -use Email::Sender::Transport::SMTP; +use Email::Sender::Transport::SMTP::Persistent; use Bugzilla::Sender::Transport::Sendmail; sub MessageToMTA { @@ -127,7 +127,8 @@ sub MessageToMTA { } if ($method eq "SMTP") { - $transport = Email::Sender::Transport::SMTP->new({ + $transport = Bugzilla->request_cache->{smtp} //= + Email::Sender::Transport::SMTP::Persistent->new({ host => Bugzilla->params->{'smtpserver'}, sasl_username => Bugzilla->params->{'smtp_username'}, sasl_password => Bugzilla->params->{'smtp_password'}, |