]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
allow_nonstandard_methods now also skips the check that only POST and
authorBen Darnell <ben@bendarnell.com>
Sun, 10 Jul 2011 00:20:29 +0000 (17:20 -0700)
committerBen Darnell <ben@bendarnell.com>
Sun, 10 Jul 2011 00:20:29 +0000 (17:20 -0700)
PUT requests have bodies

tornado/simple_httpclient.py

index 6b4645cc2100c6838c91e873a6cf641dfa76a0e7..759f460ad4f44c9ecb5165a395cfea50bcfd2865 100644 (file)
@@ -237,13 +237,14 @@ class _HTTPConnection(object):
                                                      base64.b64encode(auth))
         if self.request.user_agent:
             self.request.headers["User-Agent"] = self.request.user_agent
-        has_body = self.request.method in ("POST", "PUT")
-        if has_body:
-            assert self.request.body is not None
+        if not self.request.allow_nonstandard_methods:
+            if self.request.method in ("POST", "PUT"):
+                assert self.request.body is not None
+            else:
+                assert self.request.body is None
+        if self.request.body is not None:
             self.request.headers["Content-Length"] = str(len(
-                self.request.body))
-        else:
-            assert self.request.body is None
+                    self.request.body))
         if (self.request.method == "POST" and
             "Content-Type" not in self.request.headers):
             self.request.headers["Content-Type"] = "application/x-www-form-urlencoded"
@@ -259,7 +260,7 @@ class _HTTPConnection(object):
                 raise ValueError('Newline in header: ' + repr(line))
             request_lines.append(line)
         self.stream.write(b("\r\n").join(request_lines) + b("\r\n\r\n"))
-        if has_body:
+        if self.request.body is not None:
             self.stream.write(self.request.body)
         self.stream.read_until(b("\r\n\r\n"), self._on_headers)