summaryrefslogtreecommitdiff
path: root/docker/utils/socket.py
diff options
context:
space:
mode:
authorJoffrey F <joffrey@docker.com>2017-08-16 17:31:36 -0700
committerJoffrey F <joffrey@docker.com>2017-08-16 18:13:12 -0700
commit7bf11c93ba9ffa7be228aa0a0c62155c6fc80e35 (patch)
tree3c0f9f4223bd727171079673de846fa002cca1ab /docker/utils/socket.py
parent6f6c29ce36128d712109ff27d557d67dae087da3 (diff)
downloaddocker-py-fix_upgraded_tty_streams.tar.gz
Fix handling of non-multiplexed (TTY) streams over upgraded socketsfix_upgraded_tty_streams
Signed-off-by: Joffrey F <joffrey@docker.com>
Diffstat (limited to 'docker/utils/socket.py')
-rw-r--r--docker/utils/socket.py21
1 files changed, 20 insertions, 1 deletions
diff --git a/docker/utils/socket.py b/docker/utils/socket.py
index 4080f25..54392d2 100644
--- a/docker/utils/socket.py
+++ b/docker/utils/socket.py
@@ -75,5 +75,24 @@ def frames_iter(socket):
break
while n > 0:
result = read(socket, n)
- n -= len(result)
+ if result is None:
+ continue
+ data_length = len(result)
+ if data_length == 0:
+ # We have reached EOF
+ return
+ n -= data_length
yield result
+
+
+def socket_raw_iter(socket):
+ """
+ Returns a generator of data read from the socket.
+ This is used for non-multiplexed streams.
+ """
+ while True:
+ result = read(socket)
+ if len(result) == 0:
+ # We have reached EOF
+ return
+ yield result