summaryrefslogtreecommitdiff
path: root/websocket
diff options
context:
space:
mode:
authorliris <liris.pp@gmail.com>2019-02-23 14:18:37 +0900
committerGitHub <noreply@github.com>2019-02-23 14:18:37 +0900
commitd7c28d90ab94a400181924a586e3833ce9e1b990 (patch)
treeb73a04e4cf24db1ea6420d09cce0fecbfb9f4e05 /websocket
parent53de7b00ab8c85dcc6111313913dc4adb2eb7952 (diff)
parent9a146e32e153fa1e0111b216f32c4b0e35ec9c12 (diff)
downloadwebsocket-client-d7c28d90ab94a400181924a586e3833ce9e1b990.tar.gz
Merge pull request #528 from trygveaa/fix-interrupted-system-call
Diffstat (limited to 'websocket')
-rw-r--r--websocket/_http.py38
1 files changed, 22 insertions, 16 deletions
diff --git a/websocket/_http.py b/websocket/_http.py
index c789bb8..5b9a26d 100644
--- a/websocket/_http.py
+++ b/websocket/_http.py
@@ -166,26 +166,32 @@ def _open_socket(addrinfo_list, sockopt, timeout):
sock.setsockopt(*opts)
address = addrinfo[4]
- try:
- sock.connect(address)
- err = None
- except ProxyConnectionError as error:
- err = WebSocketProxyException(str(error))
- err.remote_ip = str(address[0])
- continue
- except socket.error as error:
- error.remote_ip = str(address[0])
+ err = None
+ while not err:
try:
- eConnRefused = (errno.ECONNREFUSED, errno.WSAECONNREFUSED)
- except:
- eConnRefused = (errno.ECONNREFUSED, )
- if error.errno in eConnRefused:
- err = error
+ sock.connect(address)
+ except ProxyConnectionError as error:
+ err = WebSocketProxyException(str(error))
+ err.remote_ip = str(address[0])
continue
+ except socket.error as error:
+ error.remote_ip = str(address[0])
+ try:
+ eConnRefused = (errno.ECONNREFUSED, errno.WSAECONNREFUSED)
+ except:
+ eConnRefused = (errno.ECONNREFUSED, )
+ if error.errno == errno.EINTR:
+ continue
+ elif error.errno in eConnRefused:
+ err = error
+ continue
+ else:
+ raise error
else:
- raise error
+ break
else:
- break
+ continue
+ break
else:
if err:
raise err