From fc512d89245c4ee1f4b6d6f0445bc962a0621288 Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Fri, 5 Feb 2016 17:51:09 -0500 Subject: [PATCH] Don't use redirect_cache if allow_redirects=False Fix for #2997 --- requests/sessions.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/requests/sessions.py b/requests/sessions.py index c177c602..639668f2 100644 --- a/requests/sessions.py +++ b/requests/sessions.py @@ -553,19 +553,21 @@ class Session(SessionRedirectMixin): if not isinstance(request, PreparedRequest): raise ValueError('You can only send PreparedRequests.') - checked_urls = set() - while request.url in self.redirect_cache: - checked_urls.add(request.url) - new_url = self.redirect_cache.get(request.url) - if new_url in checked_urls: - break - request.url = new_url - # Set up variables needed for resolve_redirects and dispatching of hooks allow_redirects = kwargs.pop('allow_redirects', True) stream = kwargs.get('stream') hooks = request.hooks + # Resolve URL in redirect cache, if available. + if allow_redirects: + checked_urls = set() + while request.url in self.redirect_cache: + checked_urls.add(request.url) + new_url = self.redirect_cache.get(request.url) + if new_url in checked_urls: + break + request.url = new_url + # Get the appropriate adapter to use adapter = self.get_adapter(url=request.url)