diff --git a/speedtest.py b/speedtest.py index 1608eb1..4487a7e 100755 --- a/speedtest.py +++ b/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 hasattr(ssl, 'SSLContext'): - kwargs['server_hostname'] = self.host - self.sock = self._context.wrap_socket(self.sock, **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):