diff --git a/setup/linux-installer.py b/setup/linux-installer.py index 4b31e65237..2324b6a30f 100644 --- a/setup/linux-installer.py +++ b/setup/linux-installer.py @@ -19,6 +19,7 @@ py3 = sys.version_info[0] > 2 enc = getattr(sys.stdout, 'encoding', 'UTF-8') or 'utf-8' calibre_version = signature = None urllib = __import__('urllib.request' if py3 else 'urllib', fromlist=1) +has_ssl_verify = sys.version_info[:3] >= (2, 7, 9) if py3: unicode = str @@ -467,7 +468,7 @@ def match_hostname(cert, hostname): raise CertificateError("no appropriate commonName or " "subjectAltName fields were found") -if py3: +if has_ssl_verify: class HTTPSConnection(httplib.HTTPSConnection): def __init__(self, ssl_version, *args, **kwargs): diff --git a/src/calibre/utils/https.py b/src/calibre/utils/https.py index bc597668bc..e37b556682 100644 --- a/src/calibre/utils/https.py +++ b/src/calibre/utils/https.py @@ -6,11 +6,12 @@ from __future__ import (unicode_literals, division, absolute_import, __license__ = 'GPL v3' __copyright__ = '2014, Kovid Goyal ' -import ssl, socket, re +import ssl, socket, re, sys from contextlib import closing from calibre import get_proxies from calibre.constants import ispy3 +has_ssl_verify = sys.version_info[:3] >= (2, 7, 9) class HTTPError(ValueError): @@ -24,6 +25,11 @@ class HTTPError(ValueError): if ispy3: from urllib.parse import urlparse import http.client as httplib +else: + import httplib + from urlparse import urlsplit as urlparse + +if has_ssl_verify: class HTTPSConnection(httplib.HTTPSConnection): def __init__(self, ssl_version, *args, **kwargs): @@ -33,9 +39,6 @@ if ispy3: context.verify_mode = ssl.CERT_REQUIRED httplib.HTTPSConnection.__init__(self, *args, **kwargs) else: - import httplib - from urlparse import urlsplit as urlparse - # Check certificate hostname {{{ # Implementation taken from python 3 class CertificateError(ValueError):