From: Ben Darnell Date: Tue, 15 Mar 2011 06:06:05 +0000 (-0700) Subject: Move curl Expect: header hack from httpclient.py to curl_httpclient.py. X-Git-Tag: v2.0.0~112 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=425f069e9dc135c560fad6006b05a16a895f2163;p=thirdparty%2Ftornado.git Move curl Expect: header hack from httpclient.py to curl_httpclient.py. Fixes: #233. --- diff --git a/tornado/curl_httpclient.py b/tornado/curl_httpclient.py index 728c0b380..326e5499a 100644 --- a/tornado/curl_httpclient.py +++ b/tornado/curl_httpclient.py @@ -287,6 +287,18 @@ def _curl_setup_request(curl, request, buffer, headers): 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, + # Google's OpenID endpoint). Additionally, this behavior has + # a bug in conjunction with the curl_multi_socket_action API + # (https://sourceforge.net/tracker/?func=detail&atid=100976&aid=3039744&group_id=976), + # which increases the delays. It's more trouble than it's worth, + # 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: ")) + if request.header_callback: curl.setopt(pycurl.HEADERFUNCTION, request.header_callback) else: diff --git a/tornado/httpclient.py b/tornado/httpclient.py index 63107dd8f..d7d500d65 100644 --- a/tornado/httpclient.py +++ b/tornado/httpclient.py @@ -169,16 +169,6 @@ class HTTPRequest(object): self.proxy_port = proxy_port self.proxy_username = proxy_username self.proxy_password = proxy_password - # libcurl's magic "Expect: 100-continue" behavior causes delays - # with servers that don't support it (which include, among others, - # Google's OpenID endpoint). Additionally, this behavior has - # a bug in conjunction with the curl_multi_socket_action API - # (https://sourceforge.net/tracker/?func=detail&atid=100976&aid=3039744&group_id=976), - # which increases the delays. It's more trouble than it's worth, - # so just turn off the feature (yes, setting Expect: to an empty - # value is the official way to disable this) - if "Expect" not in headers: - headers["Expect"] = "" self.url = utf8(url) self.method = method self.headers = headers