[Python-checkins] r68695 - in python/branches/py3k: Lib/http/client.py
benjamin.peterson
python-checkins at python.org
Sun Jan 18 01:04:57 CET 2009
Author: benjamin.peterson
Date: Sun Jan 18 01:04:57 2009
New Revision: 68695
Log:
Merged revisions 68458 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r68458 | kristjan.jonsson | 2009-01-09 14:23:16 -0600 (Fri, 09 Jan 2009) | 1 line
Issue 4336: HTTPRequest._send_output() now deals with the case of the message body not being a string. This allows clients to use endheaders(message_body) instead of endheaders() + send(message_body) without making any extra checks.
........
Modified:
python/branches/py3k/ (props changed)
python/branches/py3k/Lib/http/client.py
Modified: python/branches/py3k/Lib/http/client.py
==============================================================================
--- python/branches/py3k/Lib/http/client.py (original)
+++ python/branches/py3k/Lib/http/client.py Sun Jan 18 01:04:57 2009
@@ -697,6 +697,7 @@
"""Send the currently buffered request and clear the buffer.
Appends an extra \\r\\n to the buffer.
+ A message_body may be specified, to be appended to the request.
"""
self._buffer.extend((b"", b""))
msg = b"\r\n".join(self._buffer)
@@ -704,9 +705,14 @@
# If msg and message_body are sent in a single send() call,
# it will avoid performance problems caused by the interaction
# between delayed ack and the Nagle algorithim.
- if message_body is not None:
+ if isinstance(message_body, bytes):
msg += message_body
+ message_body = None
self.send(msg)
+ if message_body is not None:
+ #message_body was not a string (i.e. it is a file) and
+ #we must run the risk of Nagle
+ self.send(message_body)
def putrequest(self, method, url, skip_host=0, skip_accept_encoding=0):
"""Send a request to the server.
@@ -894,12 +900,7 @@
self._set_content_length(body)
for hdr, value in headers.items():
self.putheader(hdr, value)
- if isinstance(body, str):
- self.endheaders(body.encode('ascii'))
- else:
- self.endheaders()
- if body: # when body is a file rather than a string
- self.send(body)
+ self.endheaders(body.encode('ascii') if isinstance(body, str) else body)
def getresponse(self):
"""Get the response from the server."""
More information about the Python-checkins
mailing list