From f6395200ebd67fa91267d2e2700c7e81bc424719 Mon Sep 17 00:00:00 2001 From: hodbn Date: Tue, 25 Aug 2020 13:04:28 -0700 Subject: [PATCH] Refactor and explain Retry-After behavior with no timezone --- src/urllib3/util/retry.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/urllib3/util/retry.py b/src/urllib3/util/retry.py index 1c104bb646..c8a6432875 100644 --- a/src/urllib3/util/retry.py +++ b/src/urllib3/util/retry.py @@ -271,9 +271,10 @@ def parse_retry_after(self, retry_after): raise InvalidHeader("Invalid Retry-After header: %s" % retry_after) if retry_date_tuple[9] is None: # Python 2 # Assume UTC if no timezone was specified - tmp = list(retry_date_tuple) - tmp[9] = 0 - retry_date_tuple = tuple(tmp) + # On Python2.7, parsedate_tz returns None for a timezone offset + # instead of 0 if no timezone is given, where mktime_tz treats + # a None timezone offset as local time. + retry_date_tuple = retry_date_tuple[:9] + (0,) + retry_date_tuple[10:] retry_date = email.utils.mktime_tz(retry_date_tuple) seconds = retry_date - time.time()