Ensure we are utilizing the context created by HTTPSConnection, or falling back to ssl. Fixes #517
This commit is contained in:
parent
c7530bb143
commit
41e599f9c3
23
speedtest.py
23
speedtest.py
|
@ -36,7 +36,7 @@ except ImportError:
|
|||
gzip = None
|
||||
GZIP_BASE = object
|
||||
|
||||
__version__ = '2.0.1'
|
||||
__version__ = '2.0.2a'
|
||||
|
||||
|
||||
class FakeShutdownEvent(object):
|
||||
|
@ -85,9 +85,9 @@ except ImportError:
|
|||
HTTPErrorProcessor, OpenerDirector)
|
||||
|
||||
try:
|
||||
from httplib import HTTPConnection
|
||||
from httplib import HTTPConnection, BadStatusLine
|
||||
except ImportError:
|
||||
from http.client import HTTPConnection
|
||||
from http.client import HTTPConnection, BadStatusLine
|
||||
|
||||
try:
|
||||
from httplib import HTTPSConnection
|
||||
|
@ -266,10 +266,13 @@ try:
|
|||
except AttributeError:
|
||||
CERT_ERROR = tuple()
|
||||
|
||||
HTTP_ERRORS = ((HTTPError, URLError, socket.error, ssl.SSLError) +
|
||||
CERT_ERROR)
|
||||
HTTP_ERRORS = (
|
||||
(HTTPError, URLError, socket.error, ssl.SSLError, BadStatusLine) +
|
||||
CERT_ERROR
|
||||
)
|
||||
except ImportError:
|
||||
HTTP_ERRORS = (HTTPError, URLError, socket.error)
|
||||
ssl = None
|
||||
HTTP_ERRORS = (HTTPError, URLError, socket.error, BadStatusLine)
|
||||
|
||||
|
||||
class SpeedtestException(Exception):
|
||||
|
@ -420,14 +423,12 @@ if HTTPSConnection:
|
|||
"""
|
||||
def __init__(self, *args, **kwargs):
|
||||
source_address = kwargs.pop('source_address', None)
|
||||
context = kwargs.pop('context', None)
|
||||
timeout = kwargs.pop('timeout', 10)
|
||||
|
||||
HTTPSConnection.__init__(self, *args, **kwargs)
|
||||
|
||||
self.source_address = source_address
|
||||
self._context = context
|
||||
self.timeout = timeout
|
||||
self.source_address = source_address
|
||||
|
||||
def connect(self):
|
||||
"Connect to a host on a given (SSL) port."
|
||||
|
@ -435,9 +436,13 @@ if HTTPSConnection:
|
|||
SpeedtestHTTPConnection.connect(self)
|
||||
|
||||
kwargs = {}
|
||||
if ssl:
|
||||
if hasattr(ssl, 'SSLContext'):
|
||||
kwargs['server_hostname'] = self.host
|
||||
try:
|
||||
self.sock = self._context.wrap_socket(self.sock, **kwargs)
|
||||
except AttributeError:
|
||||
self.sock = ssl.wrap_socket(self.sock, **kwargs)
|
||||
|
||||
|
||||
def _build_connection(connection, source_address, timeout, context=None):
|
||||
|
|
Loading…
Reference in New Issue