summaryrefslogtreecommitdiff
path: root/docker/transport/npipesocket.py
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/transport/npipesocket.py
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/transport/npipesocket.py')
-rw-r--r--docker/transport/npipesocket.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/docker/transport/npipesocket.py b/docker/transport/npipesocket.py
index 6dfc2f2..a9bf0cc 100644
--- a/docker/transport/npipesocket.py
+++ b/docker/transport/npipesocket.py
@@ -1,6 +1,7 @@
import functools
import io
+import six
import win32file
import win32pipe
@@ -115,6 +116,9 @@ class NpipeSocket(object):
@check_closed
def recv_into(self, buf, nbytes=0):
+ if six.PY2:
+ return self._recv_into_py2(buf, nbytes)
+
readbuf = buf
if not isinstance(buf, memoryview):
readbuf = memoryview(buf)
@@ -125,6 +129,12 @@ class NpipeSocket(object):
)
return len(data)
+ def _recv_into_py2(self, buf, nbytes):
+ err, data = win32file.ReadFile(self._handle, nbytes or len(buf))
+ n = len(data)
+ buf[:n] = data
+ return n
+
@check_closed
def send(self, string, flags=0):
err, nbytes = win32file.WriteFile(self._handle, string)