XZise has submitted this change and it was merged.
Change subject: Detect and handle SSL certificate errors as fatal ......................................................................
Detect and handle SSL certificate errors as fatal
Bug: 72247 Change-Id: I14b68f3224bff3678e27428c8d83146c898a7f4b --- M pywikibot/comms/http.py M tests/http_tests.py 2 files changed, 7 insertions(+), 8 deletions(-)
Approvals: XZise: Looks good to me, approved
diff --git a/pywikibot/comms/http.py b/pywikibot/comms/http.py index 69fb686..8822c6f 100644 --- a/pywikibot/comms/http.py +++ b/pywikibot/comms/http.py @@ -48,12 +48,18 @@ elif httplib2.__version__ == '0.6.0': from httplib2 import ServerNotFoundError as SSLHandshakeError
+ # The OpenSSL error code for + # certificate verify failed + # cf. `openssl errstr 14090086` + SSL_CERT_VERIFY_FAILED_MSG = ":14090086:" + import Queue import urlparse import cookielib from urllib2 import quote else: from ssl import SSLError as SSLHandshakeError + SSL_CERT_VERIFY_FAILED_MSG = "SSL: CERTIFICATE_VERIFY_FAILED" import queue as Queue import urllib.parse as urlparse from http import cookiejar as cookielib @@ -69,12 +75,6 @@
# global variables - -# The OpenSSL error code for -# certificate verify failed -# cf. `openssl errstr 14090086` -SSL_CERT_VERIFY_FAILED = ":14090086:" -
numthreads = 1 threads = [] @@ -250,7 +250,7 @@
# TODO: do some error correcting stuff if isinstance(request.data, SSLHandshakeError): - if SSL_CERT_VERIFY_FAILED in str(request.data): + if SSL_CERT_VERIFY_FAILED_MSG in str(request.data): raise FatalServerError(str(request.data))
# if all else fails diff --git a/tests/http_tests.py b/tests/http_tests.py index ede2524..19c8909 100644 --- a/tests/http_tests.py +++ b/tests/http_tests.py @@ -36,7 +36,6 @@ self.assertIsInstance(r, unicode) self.assertIn('<html lang="mul"', r)
- @expectedFailureIf(sys.version_info[0] == 3) # bug 72247 def test_https_cert_error(self): """Test http request function fails on ssl bad certificate.""" self.assertRaises(pywikibot.FatalServerError,