Second ping. This problem is not going away, so if this solution is not acceptable, I'd like to know what needs to be improved. On Thu, 2017-05-04 at 09:01 +0200, Dennis Kaarsemaker wrote: > Ping. It's a little over a month since I sent this, but I haven't seen > any comments. Is this commit good to go? > > On Fri, 2017-03-24 at 22:37 +0100, Dennis Kaarsemaker wrote: > > Net::SMTP itself can do the necessary SSL and STARTTLS bits just fine > > since version 1.28, and Net::SMTP::SSL is now deprecated. Since 1.28 > > isn't that old yet, keep the old code in place and use it when > > necessary. > > > > While we're in the area, mark some messages for translation that were > > not yet marked as such. > > > > Signed-off-by: Dennis Kaarsemaker <dennis@xxxxxxxxxxxxxxx> > > --- > > git-send-email.perl | 54 ++++++++++++++++++++++++++++++++++------------------- > > 1 file changed, 35 insertions(+), 19 deletions(-) > > > > diff --git a/git-send-email.perl b/git-send-email.perl > > index eea0a517f7..0d90439d9a 100755 > > --- a/git-send-email.perl > > +++ b/git-send-email.perl > > @@ -1353,10 +1353,12 @@ EOF > > die __("The required SMTP server is not properly defined.") > > } > > > > + require Net::SMTP; > > + my $use_net_smtp_ssl = version->parse($Net::SMTP::VERSION) < version->parse("1.28"); > > + $smtp_domain ||= maildomain(); > > + > > if ($smtp_encryption eq 'ssl') { > > $smtp_server_port ||= 465; # ssmtp > > - require Net::SMTP::SSL; > > - $smtp_domain ||= maildomain(); > > require IO::Socket::SSL; > > > > # Suppress "variable accessed once" warning. > > @@ -1368,34 +1370,48 @@ EOF > > # Net::SMTP::SSL->new() does not forward any SSL options > > IO::Socket::SSL::set_client_defaults( > > ssl_verify_params()); > > - $smtp ||= Net::SMTP::SSL->new($smtp_server, > > - Hello => $smtp_domain, > > - Port => $smtp_server_port, > > - Debug => $debug_net_smtp); > > + > > + if ($use_net_smtp_ssl) { > > + require Net::SMTP::SSL; > > + $smtp ||= Net::SMTP::SSL->new($smtp_server, > > + Hello => $smtp_domain, > > + Port => $smtp_server_port, > > + Debug => $debug_net_smtp); > > + } > > + else { > > + $smtp ||= Net::SMTP->new($smtp_server, > > + Hello => $smtp_domain, > > + Port => $smtp_server_port, > > + Debug => $debug_net_smtp, > > + SSL => 1); > > + } > > } > > else { > > - require Net::SMTP; > > - $smtp_domain ||= maildomain(); > > $smtp_server_port ||= 25; > > $smtp ||= Net::SMTP->new($smtp_server, > > Hello => $smtp_domain, > > Debug => $debug_net_smtp, > > Port => $smtp_server_port); > > if ($smtp_encryption eq 'tls' && $smtp) { > > - require Net::SMTP::SSL; > > - $smtp->command('STARTTLS'); > > - $smtp->response(); > > - if ($smtp->code == 220) { > > + if ($use_net_smtp_ssl) { > > + $smtp->command('STARTTLS'); > > + $smtp->response(); > > + if ($smtp->code != 220) { > > + die sprintf(__("Server does not support STARTTLS! %s"), $smtp->message); > > + } > > + require Net::SMTP::SSL; > > $smtp = Net::SMTP::SSL->start_SSL($smtp, > > ssl_verify_params()) > > - or die "STARTTLS failed! ".IO::Socket::SSL::errstr(); > > - $smtp_encryption = ''; > > - # Send EHLO again to receive fresh > > - # supported commands > > - $smtp->hello($smtp_domain); > > - } else { > > - die sprintf(__("Server does not support STARTTLS! %s"), $smtp->message); > > + or die sprintf(__("STARTTLS failed! %s"), IO::Socket::SSL::errstr()); > > + } > > + else { > > + $smtp->starttls(ssl_verify_params()) > > + or die sprintf(__("STARTTLS failed! %s"), IO::Socket::SSL::errstr()); > > } > > + $smtp_encryption = ''; > > + # Send EHLO again to receive fresh > > + # supported commands > > + $smtp->hello($smtp_domain); > > } > > } > >