Exceptions in py3 don't necessarily have a 'message' attribute.

This commit is contained in:
Ralph Bean
2014-04-14 16:34:46 -04:00
parent 073771879a
commit dc84f0b4de

View File

@@ -564,7 +564,7 @@ class WebSocket(object):
while True:
line = self._recv_line()
if line == "\r\n":
if line == "\r\n" or line == "\n":
break
line = line.strip()
if traceEnabled:
@@ -821,10 +821,12 @@ class WebSocket(object):
try:
return self.sock.send(data)
except socket.timeout as e:
raise WebSocketTimeoutException(e.message)
message = getattr(e, 'strerror', getattr(e, 'message', None))
raise WebSocketTimeoutException(message)
except Exception as e:
if "timed out" in e.message:
raise WebSocketTimeoutException(e.message)
message = getattr(e, 'strerror', getattr(e, 'message', None))
if "timed out" in message:
raise WebSocketTimeoutException(message)
else:
raise
@@ -832,17 +834,18 @@ class WebSocket(object):
try:
bytes = self.sock.recv(bufsize)
except socket.timeout as e:
raise WebSocketTimeoutException(e.message)
message = getattr(e, 'strerror', getattr(e, 'message', None))
raise WebSocketTimeoutException(message)
except SSLError as e:
if e.message == "The read operation timed out":
raise WebSocketTimeoutException(e.message)
message = getattr(e, 'strerror', getattr(e, 'message', None))
if message == "The read operation timed out":
raise WebSocketTimeoutException(message)
else:
raise
if not bytes:
raise WebSocketConnectionClosedException()
return bytes
def _recv_strict(self, bufsize):
shortage = bufsize - sum(len(x) for x in self._recv_buffer)
while shortage > 0: