Move curl Expect: header hack from httpclient.py to curl_httpclient.py.

Fixes: #233.
This commit is contained in:
Ben Darnell 2011-03-14 23:06:05 -07:00
parent 6f0a8a752d
commit 425f069e9d
2 changed files with 12 additions and 10 deletions

View File

@ -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:

View File

@ -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