diff options
-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'}, |