summaryrefslogtreecommitdiff
path: root/docker/utils
diff options
context:
space:
mode:
authorJoffrey F <joffrey@docker.com>2016-10-11 17:19:20 -0700
committerJoffrey F <joffrey@docker.com>2016-10-12 13:23:27 -0700
commitc76ec15d9b58299aabb55b2c6632f08eb51d520c (patch)
tree3e1e63cfd425ac0ec8361dd159d44670bd85ae29 /docker/utils
parent6f7392ea09751be65821a0d539f6834e3f6ce31d (diff)
downloaddocker-py-npipe-advanced.tar.gz
Several fixes to npipe supportnpipe-advanced
- Fix _get_raw_response_socket to always return the NpipeSocket object - Override NpipeHTTPConnectionPool._get_conn to avoid crash in urllib3 - Fix NpipeSocket.recv_into for Python 2 - Do not call select() on NpipeSocket objects Signed-off-by: Joffrey F <joffrey@docker.com>
Diffstat (limited to 'docker/utils')
-rw-r--r--docker/utils/socket.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/docker/utils/socket.py b/docker/utils/socket.py
index ed34350..164b845 100644
--- a/docker/utils/socket.py
+++ b/docker/utils/socket.py
@@ -5,6 +5,11 @@ import struct
import six
+try:
+ from ..transport import NpipeSocket
+except ImportError:
+ NpipeSocket = type(None)
+
class SocketError(Exception):
pass
@@ -14,10 +19,12 @@ def read(socket, n=4096):
"""
Reads at most n bytes from socket
"""
+
recoverable_errors = (errno.EINTR, errno.EDEADLK, errno.EWOULDBLOCK)
# wait for data to become available
- select.select([socket], [], [])
+ if not isinstance(socket, NpipeSocket):
+ select.select([socket], [], [])
try:
if hasattr(socket, 'recv'):