summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoffrey F <joffrey@docker.com>2017-08-31 15:58:28 -0700
committerJoffrey F <joffrey@docker.com>2017-08-31 15:58:28 -0700
commitc231fc74ef824b7ba9025f819ca76a2ade4e66d2 (patch)
tree4824731a683020dcef3875671071392b4615e553
parent3c9c8b181c1029e9a1e819d5da712614f70c510d (diff)
downloaddocker-py-1732-fix-hijack-parse.tar.gz
Do not interrupt streaming when encountering 0-length frames1732-fix-hijack-parse
Signed-off-by: Joffrey F <joffrey@docker.com>
-rw-r--r--docker/utils/socket.py4
-rw-r--r--tests/unit/fake_api.py4
2 files changed, 5 insertions, 3 deletions
diff --git a/docker/utils/socket.py b/docker/utils/socket.py
index 54392d2..c3a5f90 100644
--- a/docker/utils/socket.py
+++ b/docker/utils/socket.py
@@ -59,7 +59,7 @@ def next_frame_size(socket):
try:
data = read_exactly(socket, 8)
except SocketError:
- return 0
+ return -1
_, actual = struct.unpack('>BxxxL', data)
return actual
@@ -71,7 +71,7 @@ def frames_iter(socket):
"""
while True:
n = next_frame_size(socket)
- if n == 0:
+ if n < 0:
break
while n > 0:
result = read(socket, n)
diff --git a/tests/unit/fake_api.py b/tests/unit/fake_api.py
index 2ba85bb..045c342 100644
--- a/tests/unit/fake_api.py
+++ b/tests/unit/fake_api.py
@@ -205,7 +205,9 @@ def get_fake_wait():
def get_fake_logs():
status_code = 200
- response = (b'\x01\x00\x00\x00\x00\x00\x00\x11Flowering Nights\n'
+ response = (b'\x01\x00\x00\x00\x00\x00\x00\x00'
+ b'\x02\x00\x00\x00\x00\x00\x00\x00'
+ b'\x01\x00\x00\x00\x00\x00\x00\x11Flowering Nights\n'
b'\x01\x00\x00\x00\x00\x00\x00\x10(Sakuya Iyazoi)\n')
return status_code, response