diff options
| author | Colin Stolley <colin@sproutsocial.com> | 2015-09-18 11:11:21 -0500 |
|---|---|---|
| committer | Colin Stolley <colin@sproutsocial.com> | 2015-09-18 11:19:52 -0500 |
| commit | 7ebbd4334d0a78b6b869729b7cbf19fd7ce98037 (patch) | |
| tree | 6a958c8617769a02c87be748649af60d0f008690 /python2 | |
| parent | f69fe23a71ac58bde912af87dabf3057c4cd3c76 (diff) | |
| download | httplib2-7ebbd4334d0a78b6b869729b7cbf19fd7ce98037.tar.gz | |
Fix incorrect ResponseNotReady exceptions, retry on transient errors.
For socket errors besides Connection Refused, the code will swallow the
error and fall through to a misleading "ResponseNotReady" exception. This
is both incorrect and unhelpful. The code also does not retry on errors that
are potentially transient, ie, Network Unreachable or Address Not Available.
This patch addresses both concerns by raising the socket error so
that application code can handle it appropriately, or retrying if
the socket error is transient.
This likely resolves Issue #284 .
Diffstat (limited to 'python2')
| -rw-r--r-- | python2/httplib2/__init__.py | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/python2/httplib2/__init__.py b/python2/httplib2/__init__.py index 19e7cff..f0d17a1 100644 --- a/python2/httplib2/__init__.py +++ b/python2/httplib2/__init__.py @@ -1285,8 +1285,9 @@ class Http(object): err = getattr(e, 'args')[0] else: err = e.errno - if err == errno.ECONNREFUSED: # Connection refused - raise + if err in (errno.ENETUNREACH, errno.EADDRNOTAVAIL) and i < RETRIES: + continue # retry on potentially transient socket errors + raise except httplib.HTTPException: # Just because the server closed the connection doesn't apparently mean # that the server didn't send a response. |
