From 7ce5b04d20684101748812cf2bd5e7d6275bd5e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Buclin?= Date: Thu, 16 Oct 2014 18:09:15 +0200 Subject: Bug 1082557: Use a persistent connection to the SMTP server for improved performance r=dylan a=glob --- Bugzilla.pm | 7 +++++-- 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'}, -- cgit v1.2.1