diff options
author | Joffrey F <joffrey@docker.com> | 2017-08-31 15:58:28 -0700 |
---|---|---|
committer | Joffrey F <joffrey@docker.com> | 2017-08-31 15:58:28 -0700 |
commit | c231fc74ef824b7ba9025f819ca76a2ade4e66d2 (patch) | |
tree | 4824731a683020dcef3875671071392b4615e553 | |
parent | 3c9c8b181c1029e9a1e819d5da712614f70c510d (diff) | |
download | docker-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.py | 4 | ||||
-rw-r--r-- | tests/unit/fake_api.py | 4 |
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 |