Simplify code in multiprocessing.Connection.send_bytes().

Followup to issue #20540; patch by Serhiy.
This commit is contained in:
Antoine Pitrou 2014-07-31 18:41:57 -04:00
parent cac9e719cc
commit 0b87831de9
1 changed files with 6 additions and 9 deletions

View File

@ -400,17 +400,14 @@ def _send_bytes(self, buf):
if n > 16384:
# The payload is large so Nagle's algorithm won't be triggered
# and we'd better avoid the cost of concatenation.
chunks = [header, buf]
elif n > 0:
self._send(header)
self._send(buf)
else:
# Issue #20540: concatenate before sending, to avoid delays due
# to Nagle's algorithm on a TCP socket.
chunks = [header + buf]
else:
# This code path is necessary to avoid "broken pipe" errors
# when sending a 0-length buffer if the other end closed the pipe.
chunks = [header]
for chunk in chunks:
self._send(chunk)
# Also note we want to avoid sending a 0-length buffer separately,
# to avoid "broken pipe" errors if the other end closed the pipe.
self._send(header + buf)
def _recv_bytes(self, maxsize=None):
buf = self._recv(4)