Skip to content

Commit 5fed7b4

Browse files
Read stream from BufferedReader
1 parent db7f8b8 commit 5fed7b4

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

docker/api/client.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import io
12
import json
23
import struct
34
import urllib
@@ -428,6 +429,9 @@ def _read_from_socket(self, response, stream, tty=True, demux=False):
428429
"""
429430
socket = self._get_raw_response_socket(response)
430431

432+
if isinstance(response.raw._fp.fp, io.BufferedReader):
433+
socket = response.raw._fp.fp
434+
431435
gen = frames_iter(socket, tty)
432436

433437
if demux:

docker/utils/socket.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import errno
2+
import io
23
import os
34
import select
45
import socket as pysocket
@@ -30,7 +31,7 @@ def read(socket, n=4096):
3031

3132
recoverable_errors = (errno.EINTR, errno.EDEADLK, errno.EWOULDBLOCK)
3233

33-
if not isinstance(socket, NpipeSocket):
34+
if not isinstance(socket, NpipeSocket) and not isinstance(socket, io.BufferedReader):
3435
if not hasattr(select, "poll"):
3536
# Limited to 1024
3637
select.select([socket], [], [])
@@ -42,7 +43,7 @@ def read(socket, n=4096):
4243
try:
4344
if hasattr(socket, 'recv'):
4445
return socket.recv(n)
45-
if isinstance(socket, pysocket.SocketIO):
46+
if isinstance(socket, pysocket.SocketIO) or isinstance(socket, io.BufferedReader):
4647
return socket.read(n)
4748
return os.read(socket.fileno(), n)
4849
except OSError as e:

0 commit comments

Comments
 (0)