]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
Disable Expect header in curl_httpclient.py without clearing all headers. 239/head
authorNeil Rahilly <neilrahilly@gmail.com>
Mon, 28 Mar 2011 21:13:06 +0000 (17:13 -0400)
committerNeil Rahilly <neilrahilly@gmail.com>
Mon, 28 Mar 2011 21:13:06 +0000 (17:13 -0400)
Fixes previous fix (18f942b).

tornado/curl_httpclient.py

index d925b1698d696df330957e4768d4da868e3e769d..248157e4b47e8bd972ac6618724e199c90780e79 100644 (file)
@@ -280,13 +280,6 @@ def _curl_create(max_simultaneous_connections=None):
 
 def _curl_setup_request(curl, request, buffer, headers):
     curl.setopt(pycurl.URL, request.url)
-    # Request headers may be either a regular dict or HTTPHeaders object
-    if isinstance(request.headers, httputil.HTTPHeaders):
-        curl.setopt(pycurl.HTTPHEADER,
-                    [utf8("%s: %s" % i) for i in request.headers.get_all()])
-    else:
-        curl.setopt(pycurl.HTTPHEADER,
-                    [utf8("%s: %s" % i) for i in request.headers.iteritems()])
 
     # libcurl's magic "Expect: 100-continue" behavior causes delays
     # with servers that don't support it (which include, among others,
@@ -297,7 +290,15 @@ def _curl_setup_request(curl, request, buffer, headers):
     # so just turn off the feature (yes, setting Expect: to an empty
     # value is the official way to disable this)
     if "Expect" not in request.headers:
-        curl.setopt(pycurl.HTTPHEADER, [utf8("Expect: ")])
+        request.headers["Expect"] = ""
+
+    # Request headers may be either a regular dict or HTTPHeaders object
+    if isinstance(request.headers, httputil.HTTPHeaders):
+        curl.setopt(pycurl.HTTPHEADER,
+                    [utf8("%s: %s" % i) for i in request.headers.get_all()])
+    else:
+        curl.setopt(pycurl.HTTPHEADER,
+                    [utf8("%s: %s" % i) for i in request.headers.iteritems()])
 
     if request.header_callback:
         curl.setopt(pycurl.HEADERFUNCTION, request.header_callback)