diff options
author | Kenneth Reitz <me@kennethreitz.org> | 2014-09-24 22:57:38 -0400 |
---|---|---|
committer | Kenneth Reitz <me@kennethreitz.org> | 2014-09-24 22:57:38 -0400 |
commit | de76fbeefbeae0974725e9470105347804d07349 (patch) | |
tree | 4cba5a29704f94de313ec34df4e0d5d80771813c | |
parent | e0d88c2814f24e7da11b03351934bd1df5e27476 (diff) | |
parent | ac44b482971d93cf5e7d4985a0b3fff52b3d2059 (diff) | |
download | python-requests-de76fbeefbeae0974725e9470105347804d07349.tar.gz |
Merge pull request #2244 from sigmavirus24/bug/2231
Avoid getting stuck in a loop
-rw-r--r-- | requests/sessions.py | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/requests/sessions.py b/requests/sessions.py index 023edfbd..f9873064 100644 --- a/requests/sessions.py +++ b/requests/sessions.py @@ -535,8 +535,13 @@ 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: - request.url = self.redirect_cache.get(request.url) + 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) |