From 425f069e9dc135c560fad6006b05a16a895f2163 Mon Sep 17 00:00:00 2001 From: Ben Darnell Date: Mon, 14 Mar 2011 23:06:05 -0700 Subject: [PATCH] Move curl Expect: header hack from httpclient.py to curl_httpclient.py. Fixes: #233. --- tornado/curl_httpclient.py | 12 ++++++++++++ tornado/httpclient.py | 10 ---------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/tornado/curl_httpclient.py b/tornado/curl_httpclient.py index 728c0b38..326e5499 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 63107dd8..d7d500d6 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