Skip to content

Commit

Permalink
send-email: set SSL options through IO::Socket::SSL::set_client_defaults
Browse files Browse the repository at this point in the history
When --smtp-encryption=ssl, we use a Net::SMTP::SSL connection,
passing its ->new all the options that would otherwise go to
Net::SMTP->new (most options) and IO::Socket::SSL->start_SSL (for the
SSL options).

However, while Net::SMTP::SSL replaces the underlying socket class
with an SSL socket, it does nothing to allow passing options to that
socket.  So the SSL-relevant options are lost.

Fortunately there is an escape hatch: we can directly set the options
with IO::Socket::SSL::set_client_defaults.  They will then persist
within the IO::Socket::SSL module.

Signed-off-by: Thomas Rast <[email protected]>
Signed-off-by: Junio C Hamano <[email protected]>
  • Loading branch information
trast authored and gitster committed Dec 4, 2013
1 parent 979e652 commit 5508f3e
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions git-send-email.perl
Original file line number Diff line number Diff line change
Expand Up @@ -1214,11 +1214,14 @@ sub send_message {
$smtp_server_port ||= 465; # ssmtp
require Net::SMTP::SSL;
$smtp_domain ||= maildomain();
require IO::Socket::SSL;
# 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,
ssl_verify_params());
Debug => $debug_net_smtp);
}
else {
require Net::SMTP;
Expand Down

0 comments on commit 5508f3e

Please sign in to comment.