Skip to content

Commit 7e105f5

Browse files
committed
Merge pull request #184 from ibuildthecloud/fix-chunking
Use Requests.iter_lines to fix #176
2 parents 7ea1195 + e8b993a commit 7e105f5

File tree

1 file changed

+6
-12
lines changed

1 file changed

+6
-12
lines changed

docker/client.py

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -233,17 +233,8 @@ def _get_raw_response_socket(self, response):
233233

234234
def _stream_helper(self, response):
235235
"""Generator for data coming from a chunked-encoded HTTP response."""
236-
socket_fp = self._get_raw_response_socket(response)
237-
socket_fp.setblocking(1)
238-
socket = socket_fp.makefile()
239-
while True:
240-
size = int(socket.readline(), 16)
241-
if size <= 0:
242-
break
243-
data = socket.readline()
244-
if not data:
245-
break
246-
yield data
236+
for line in response.iter_lines(chunk_size=32):
237+
yield line
247238

248239
def _multiplexed_buffer_helper(self, response):
249240
"""A generator of multiplexed data blocks read from a buffered
@@ -349,6 +340,9 @@ def build(self, path=None, tag=None, quiet=False, fileobj=None,
349340
else:
350341
context = utils.tar(path)
351342

343+
if utils.compare_version('1.8', self._version) >= 0:
344+
stream = True
345+
352346
u = self._url('/build')
353347
params = {
354348
't': tag,
@@ -372,7 +366,7 @@ def build(self, path=None, tag=None, quiet=False, fileobj=None,
372366
if context is not None:
373367
context.close()
374368

375-
if stream or utils.compare_version('1.8', self._version) >= 0:
369+
if stream:
376370
return self._stream_helper(response)
377371
else:
378372
output = self._result(response)

0 commit comments

Comments
 (0)