Kaydet (Commit) 822b21c4 authored tarafından Benjamin Peterson's avatar Benjamin Peterson

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.
........
üst b4ddfa41
...@@ -697,6 +697,7 @@ class HTTPConnection: ...@@ -697,6 +697,7 @@ class HTTPConnection:
"""Send the currently buffered request and clear the buffer. """Send the currently buffered request and clear the buffer.
Appends an extra \\r\\n to 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"")) self._buffer.extend((b"", b""))
msg = b"\r\n".join(self._buffer) msg = b"\r\n".join(self._buffer)
...@@ -704,9 +705,14 @@ class HTTPConnection: ...@@ -704,9 +705,14 @@ class HTTPConnection:
# If msg and message_body are sent in a single send() call, # If msg and message_body are sent in a single send() call,
# it will avoid performance problems caused by the interaction # it will avoid performance problems caused by the interaction
# between delayed ack and the Nagle algorithim. # between delayed ack and the Nagle algorithim.
if message_body is not None: if isinstance(message_body, bytes):
msg += message_body msg += message_body
message_body = None
self.send(msg) 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): def putrequest(self, method, url, skip_host=0, skip_accept_encoding=0):
"""Send a request to the server. """Send a request to the server.
...@@ -894,12 +900,7 @@ class HTTPConnection: ...@@ -894,12 +900,7 @@ class HTTPConnection:
self._set_content_length(body) self._set_content_length(body)
for hdr, value in headers.items(): for hdr, value in headers.items():
self.putheader(hdr, value) self.putheader(hdr, value)
if isinstance(body, str): self.endheaders(body.encode('ascii') if isinstance(body, str) else body)
self.endheaders(body.encode('ascii'))
else:
self.endheaders()
if body: # when body is a file rather than a string
self.send(body)
def getresponse(self): def getresponse(self):
"""Get the response from the server.""" """Get the response from the server."""
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment