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.
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:
defaults['encode_uri'] = True
defaults['trust_env'] = True
defaults['store_cookies'] = True
+defaults['support_http0.9'] = True
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):