diff --git a/docker/client.py b/docker/client.py index d8f79c9206..38355b09c4 100644 --- a/docker/client.py +++ b/docker/client.py @@ -233,17 +233,8 @@ def _get_raw_response_socket(self, response): def _stream_helper(self, response): """Generator for data coming from a chunked-encoded HTTP response.""" - socket_fp = self._get_raw_response_socket(response) - socket_fp.setblocking(1) - socket = socket_fp.makefile() - while True: - size = int(socket.readline(), 16) - if size <= 0: - break - data = socket.readline() - if not data: - break - yield data + for line in response.iter_lines(chunk_size=32): + yield line def _multiplexed_buffer_helper(self, response): """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, else: context = utils.tar(path) + if utils.compare_version('1.8', self._version) >= 0: + stream = True + u = self._url('/build') params = { 't': tag, @@ -372,7 +366,7 @@ def build(self, path=None, tag=None, quiet=False, fileobj=None, if context is not None: context.close() - if stream or utils.compare_version('1.8', self._version) >= 0: + if stream: return self._stream_helper(response) else: output = self._result(response)