From: Thomas Rast Date: Sun, 1 Dec 2013 22:48:43 +0000 (+0100) Subject: send-email: set SSL options through IO::Socket::SSL::set_client_defaults X-Git-Tag: v1.9-rc0~62^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5508f3ed2c1cdb515e658cfc29ca0d5cd6683190;p=thirdparty%2Fgit.git 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 Signed-off-by: Junio C Hamano --- diff --git a/git-send-email.perl b/git-send-email.perl index 9f31c68b82..2016d9c619 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;