changeset 29931:799e36749f1a

ssl: handle a difference in SSLError with pypy (issue5348) The SSLError exception is a bit different with pypy (message is the first argument, not the second) This led the certificate error handling to crash when trying to extract the ssl error message. We now handle this different and 'test-https.t' is green again.
author Pierre-Yves David <pierre-yves.david@ens-lyon.org>
date Tue, 13 Sep 2016 17:46:29 +0200
parents be16091ac14d
children e5a97ec6ebb8
files mercurial/sslutil.py
diffstat 1 files changed, 5 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/sslutil.py	Mon Sep 12 10:55:43 2016 -0700
+++ b/mercurial/sslutil.py	Tue Sep 13 17:46:29 2016 +0200
@@ -390,8 +390,12 @@
         try:
             sslcontext.load_verify_locations(cafile=settings['cafile'])
         except ssl.SSLError as e:
+            if len(e.args) == 1: # pypy has different SSLError args
+                msg = e.args[0]
+            else:
+                msg = e.args[1]
             raise error.Abort(_('error loading CA file %s: %s') % (
-                              settings['cafile'], e.args[1]),
+                              settings['cafile'], msg),
                               hint=_('file is empty or malformed?'))
         caloaded = True
     elif settings['allowloaddefaultcerts']: