From: John Szakmeister Date: Sun, 2 Dec 2012 16:25:18 +0000 (-0500) Subject: Add the ability to turn off HTTP 0.9 support. X-Git-Tag: v1.0.0~82^2~5^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ed642cfb6d471f2462953ac5f4f33a443750bd02;p=services%2Fpython-requests.git Add the ability to turn off HTTP 0.9 support. While debugging an issue I discovered requests was coming back with 200 response, when it really shouldn't have. It turns out this happened for two reasons: the jetty server running the app was rather lame and didn't fail the request as a Bad Request, and httplib was happy to let malformed data through and call it success. It turns out httplib's strict flag controls this behavior of whether or not to validate the status line. The underlying urllib3 supports the concept as well. There was a bug there to that is now fixed upstream. The last step is exposing this through requests. This introduces a supports_http0.9 flag to help control this behavior. It defaults to to True to preserve the current behavior. Setting it to False will allow the underlying HTTPConnection to validate the status line. --- diff --git a/requests/api.py b/requests/api.py index ded7935..ce8495c 100644 --- a/requests/api.py +++ b/requests/api.py @@ -44,7 +44,7 @@ def request(method, url, **kwargs): adhoc_session = False session = kwargs.pop('session', None) if session is None: - session = sessions.session() + session = sessions.session(config=kwargs.get('config', None)) adhoc_session = True try: diff --git a/requests/defaults.py b/requests/defaults.py index 91d038b..6f18875 100644 --- a/requests/defaults.py +++ b/requests/defaults.py @@ -48,3 +48,4 @@ defaults['keep_alive'] = True defaults['encode_uri'] = True defaults['trust_env'] = True defaults['store_cookies'] = True +defaults['support_http0.9'] = True diff --git a/requests/sessions.py b/requests/sessions.py index f0d4f3c..5887f74 100644 --- a/requests/sessions.py +++ b/requests/sessions.py @@ -98,7 +98,8 @@ class Session(object): def init_poolmanager(self): self.poolmanager = PoolManager( num_pools=self.config.get('pool_connections'), - maxsize=self.config.get('pool_maxsize') + maxsize=self.config.get('pool_maxsize'), + strict=not self.config.get('support_http0.9') ) def __repr__(self):