Incorporate feedback from 4113 (#4115)

This commit is contained in:
Brad Warren 2017-01-30 09:44:55 -08:00 committed by GitHub
parent a1b1ae25ae
commit 240438eec7
2 changed files with 17 additions and 9 deletions

View file

@ -681,16 +681,14 @@ class ClientNetwork(object): # pylint: disable=too-many-instance-attributes
be retried once.
"""
should_retry = True
while True:
try:
try:
return self._post_once(*args, **kwargs)
except messages.Error as error:
if error.code == 'badNonce':
logger.debug('Retrying request after error:\n%s', error)
return self._post_once(*args, **kwargs)
except messages.Error as error:
if should_retry and error.code == 'badNonce':
logger.debug('Retrying request after error:\n%s', error)
should_retry = False
else:
raise
else:
raise
def _post_once(self, url, obj, content_type=JOSE_CONTENT_TYPE, **kwargs):
data = self._wrap_in_jws(obj, self._get_nonce(url))

View file

@ -717,6 +717,16 @@ class ClientNetworkWithMockedResponseTest(unittest.TestCase):
self.assertRaises(messages.Error, self.net.post, 'uri',
self.obj, content_type=self.content_type)
def test_post_not_retried(self):
check_response = mock.MagicMock()
check_response.side_effect = [messages.Error.with_code('malformed'),
self.checked_response]
# pylint: disable=protected-access
self.net._check_response = check_response
self.assertRaises(messages.Error, self.net.post, 'uri',
self.obj, content_type=self.content_type)
def test_post_successful_retry(self):
check_response = mock.MagicMock()
check_response.side_effect = [messages.Error.with_code('badNonce'),