Fix AttributeError: 'HTTPError' object has no attribute 'reason'
Not every version of urllib2 supplies a reason object on the
HTTPError exception that it throws from urlopen(). Work around
this by using str(e) instead and hope the string formatting includes
sufficient information.
Change-Id: I0f4586dba0aa7152691b2371627c951f91fdfc8d
Signed-off-by: Shawn O. Pearce <sop@google.com>
diff --git a/git_config.py b/git_config.py
index bcd6e8d..ac41d5b 100644
--- a/git_config.py
+++ b/git_config.py
@@ -26,7 +26,6 @@
import urllib2
from signal import SIGTERM
-from urllib2 import urlopen, HTTPError
from error import GitError, UploadError
from trace import Trace
@@ -578,7 +577,7 @@
self._review_port = info[2]
else:
try:
- info = urlopen(u).read()
+ info = urllib2.urlopen(u).read()
if info == 'NOT_AVAILABLE':
raise UploadError('%s: SSH disabled' % self.review)
if '<' in info:
@@ -590,15 +589,15 @@
self._review_protocol = 'ssh'
self._review_host = info.split(" ")[0]
self._review_port = info.split(" ")[1]
- except urllib2.URLError, e:
- raise UploadError('%s: %s' % (self.review, e.reason[1]))
- except HTTPError, e:
+ except urllib2.HTTPError, e:
if e.code == 404:
self._review_protocol = 'http-post'
self._review_host = None
self._review_port = None
else:
- raise UploadError('Upload over ssh unavailable')
+ raise UploadError('Upload over SSH unavailable')
+ except urllib2.URLError, e:
+ raise UploadError('%s: %s' % (self.review, str(e)))
REVIEW_CACHE[u] = (
self._review_protocol,
diff --git a/project.py b/project.py
index 76d4d0d..5f8369d 100644
--- a/project.py
+++ b/project.py
@@ -1491,7 +1491,7 @@
msg = ''
raise DownloadError('HTTP %s%s' % (e.code, msg))
except urllib2.URLError, e:
- raise DownloadError('%s (%s)' % (e.reason, req.get_host()))
+ raise DownloadError('%s: %s ' % (req.get_host(), str(e)))
p = None
try: