aboutsummaryrefslogtreecommitdiff
path: root/git-send-email.perl
diff options
context:
space:
mode:
authorThomas Rast <tr@thomasrast.ch>2013-12-01 23:48:43 +0100
committerJunio C Hamano <gitster@pobox.com>2013-12-04 11:45:32 -0800
commit5508f3ed2c1cdb515e658cfc29ca0d5cd6683190 (patch)
tree240c88a0484603869e23e3f0311ce0f6b43c59a8 /git-send-email.perl
parent979e652a18eea8e865777239f11c89795d969211 (diff)
downloadgit-5508f3ed2c1cdb515e658cfc29ca0d5cd6683190.tar.gz
git-5508f3ed2c1cdb515e658cfc29ca0d5cd6683190.tar.xz
send-email: set SSL options through IO::Socket::SSL::set_client_defaults
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 <tr@thomasrast.ch> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-send-email.perl')
-rwxr-xr-xgit-send-email.perl7
1 files changed, 5 insertions, 2 deletions
diff --git a/git-send-email.perl b/git-send-email.perl
index 9f31c68b8..2016d9c61 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -1214,11 +1214,14 @@ X-Mailer: git-send-email $gitversion
$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;