From 62cdfbdbcd6aaa2647ba69ba0f9c7d0e8d9b35bc Mon Sep 17 00:00:00 2001 From: khazhyk Date: Sat, 22 Jul 2017 20:04:43 -0700 Subject: [PATCH] Raise in HTTPClient.request when out of retries Raise after loop completes without returning with most recent values for r, data. This is a bit less fragile than checking tries < 4, since changing the retry count requires changing values in multiple places. (There seemed to already be handling in the 502 retry, tries <= 5, which always evaluated to true, e.g.) Previously, once out of retries, we would always return None without raising. This won't NameError so long as we make at least one HTTP request. --- discord/http.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/discord/http.py b/discord/http.py index 2d3bb8e1c..bddf56e30 100644 --- a/discord/http.py +++ b/discord/http.py @@ -194,7 +194,7 @@ class HTTPClient: continue # we've received a 500 or 502, unconditional retry - if r.status in {500, 502} and tries <= 5: + if r.status in {500, 502}: yield from asyncio.sleep(1 + tries * 2, loop=self.loop) continue @@ -208,6 +208,8 @@ class HTTPClient: finally: # clean-up just in case yield from r.release() + # We've run out of retries, raise. + raise HTTPException(r, data) def get_attachment(self, url): resp = yield from self._session.get(url)