If a server's certificate isn't accepted by send-email, the output is:

        Unable to initialize SMTP properly. Check config and use --smtp-debug.

but adding --smtp-debug=1 just produces the same output since we don't
get as far as talking SMTP.

Turning on SSL debug at level 1 gives:

        DEBUG: .../IO/Socket/SSL.pm:1796: SSL connect attempt failed 
error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify 
failed
        DEBUG: .../IO/Socket/SSL.pm:673: fatal SSL error: SSL connect attempt 
failed error:14090086:SSL routines:ssl3_get_server_certificate:certificate 
verify failed
        DEBUG: .../IO/Socket/SSL.pm:1780: IO::Socket::IP configuration failed

IO::Socket::SSL defines level 1 debug as "print out errors from
IO::Socket::SSL and ciphers from Net::SSLeay".  In fact, it aliases
Net::SSLeay::trace which is defined to guarantee silence at level 0 and
only emit error messages at level 1, so let's enable it by default.

The modification of warnings is needed to avoid a warning about:

        Name "IO::Socket::SSL::DEBUG" used only once: possible typo

Signed-off-by: John Keeping <j...@keeping.me.uk>
---
Sorry about the delay following up with this.

I don't particularly like the need for brackets and modifying the
warnings here, but AFAIK there is no other way to avoid a warning that
is likely to upset users (although I am far from a Perl expert).

 git-send-email.perl | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/git-send-email.perl b/git-send-email.perl
index e907e0e..72508be 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -1318,6 +1318,13 @@ Message-Id: $message_id
                        require Net::SMTP::SSL;
                        $smtp_domain ||= maildomain();
                        require IO::Socket::SSL;
+
+                       # Suppress "variable accessed once" warning.
+                       {
+                               no warnings 'once';
+                               $IO::Socket::SSL::DEBUG = 1;
+                       }
+
                        # Net::SMTP::SSL->new() does not forward any SSL options
                        IO::Socket::SSL::set_client_defaults(
                                ssl_verify_params());
-- 
2.6.3.462.gbe2c914

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to