From fdb5238c4037d34f7577722dbff72cbb9a18d5ce Mon Sep 17 00:00:00 2001 From: liris Date: Tue, 2 Dec 2014 09:37:21 +0900 Subject: [PATCH] fixed #129 ssl.SSLError strerror is always None on python 2.7.9 rc1. --- websocket/_core.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/websocket/_core.py b/websocket/_core.py index 1cd554b..1408e1d 100644 --- a/websocket/_core.py +++ b/websocket/_core.py @@ -217,6 +217,13 @@ def _get_proxy_info(hostname, is_secure, **options): return None, 0, None +def _extract_err_message(exception): + message = getattr(exception, 'strerror', '') + if not message: + message = getattr(exception, 'message', '') + + return message + def create_connection(url, timeout=None, **options): """ @@ -904,11 +911,11 @@ class WebSocket(object): try: return self.sock.send(data) except socket.timeout as e: - message = getattr(e, 'strerror', getattr(e, 'message', '')) + message = _extract_err_message(e) raise WebSocketTimeoutException(message) except Exception as e: - message = getattr(e, 'strerror', getattr(e, 'message', '')) - if message and isinstance(message, six.text_type) and "timed out" in message: + message = _extract_err_message(e) + if message and "timed out" in message: raise WebSocketTimeoutException(message) else: raise @@ -920,10 +927,10 @@ class WebSocket(object): try: bytes = self.sock.recv(bufsize) except socket.timeout as e: - message = getattr(e, 'strerror', getattr(e, 'message', '')) + message = _extract_err_message(e) raise WebSocketTimeoutException(message) except SSLError as e: - message = getattr(e, 'strerror', getattr(e, 'message', '')) + message = _extract_err_message(e) if message == "The read operation timed out": raise WebSocketTimeoutException(message) else: