diff options
author | Joffrey F <joffrey@docker.com> | 2016-10-11 17:19:20 -0700 |
---|---|---|
committer | Joffrey F <joffrey@docker.com> | 2016-10-12 13:23:27 -0700 |
commit | c76ec15d9b58299aabb55b2c6632f08eb51d520c (patch) | |
tree | 3e1e63cfd425ac0ec8361dd159d44670bd85ae29 /docker/transport/npipesocket.py | |
parent | 6f7392ea09751be65821a0d539f6834e3f6ce31d (diff) | |
download | docker-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.py | 10 |
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) |