From c5b9847788ef71bee2b831a720fa85798d2be47d Mon Sep 17 00:00:00 2001 From: Neil Rahilly Date: Mon, 28 Mar 2011 17:13:06 -0400 Subject: [PATCH] Disable Expect header in curl_httpclient.py without clearing all headers. Fixes previous fix (18f942b). --- tornado/curl_httpclient.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/tornado/curl_httpclient.py b/tornado/curl_httpclient.py index d925b1698..248157e4b 100644 --- a/tornado/curl_httpclient.py +++ b/tornado/curl_httpclient.py @@ -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) -- 2.47.2