Bug 1082557: Use a persistent connection to the SMTP server for improved performance

r=dylan a=glob


git-svn-id: svn://10.0.0.236/trunk@265623 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
bzrmirror%bugzilla.org 2014-10-16 16:30:51 +00:00
parent ed83e15249
commit d0e5ad58df
4 changed files with 10 additions and 6 deletions

View File

@ -1 +1 @@
9171 9172

View File

@ -1 +1 @@
b1bdb0ed35a75233edc1a7c59b697bb08adc38c7 7ce5b04d20684101748812cf2bd5e7d6275bd5e7

View File

@ -659,13 +659,16 @@ sub memcached {
# Per-process cleanup. Note that this is a plain subroutine, not a method, # Per-process cleanup. Note that this is a plain subroutine, not a method,
# so we don't have $class available. # so we don't have $class available.
sub _cleanup { sub _cleanup {
my $main = Bugzilla->request_cache->{dbh_main}; my $cache = Bugzilla->request_cache;
my $shadow = Bugzilla->request_cache->{dbh_shadow}; my $main = $cache->{dbh_main};
my $shadow = $cache->{dbh_shadow};
foreach my $dbh ($main, $shadow) { foreach my $dbh ($main, $shadow) {
next if !$dbh; next if !$dbh;
$dbh->bz_rollback_transaction() if $dbh->bz_in_transaction; $dbh->bz_rollback_transaction() if $dbh->bz_in_transaction;
$dbh->disconnect; $dbh->disconnect;
} }
my $smtp = $cache->{smtp};
$smtp->disconnect if $smtp;
clear_request_cache(); clear_request_cache();
# These are both set by CGI.pm but need to be undone so that # These are both set by CGI.pm but need to be undone so that

View File

@ -25,7 +25,7 @@ use Encode qw(encode);
use Encode::MIME::Header; use Encode::MIME::Header;
use Email::MIME; use Email::MIME;
use Email::Sender::Simple qw(sendmail); use Email::Sender::Simple qw(sendmail);
use Email::Sender::Transport::SMTP; use Email::Sender::Transport::SMTP::Persistent;
use Bugzilla::Sender::Transport::Sendmail; use Bugzilla::Sender::Transport::Sendmail;
sub MessageToMTA { sub MessageToMTA {
@ -127,7 +127,8 @@ sub MessageToMTA {
} }
if ($method eq "SMTP") { 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'}, host => Bugzilla->params->{'smtpserver'},
sasl_username => Bugzilla->params->{'smtp_username'}, sasl_username => Bugzilla->params->{'smtp_username'},
sasl_password => Bugzilla->params->{'smtp_password'}, sasl_password => Bugzilla->params->{'smtp_password'},