From bf1fbb20ab33cc479881a2b755e336872971dd78 Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Tue, 11 Oct 2011 09:31:58 -0700 Subject: [PATCH] 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 --- git_config.py | 11 +++++------ project.py | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/git_config.py b/git_config.py index bcd6e8d6..ac41d5b0 100644 --- a/git_config.py +++ b/git_config.py @@ -26,7 +26,6 @@ import time import urllib2 from signal import SIGTERM -from urllib2 import urlopen, HTTPError from error import GitError, UploadError from trace import Trace @@ -578,7 +577,7 @@ class Remote(object): 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 @@ class Remote(object): 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 76d4d0d5..5f8369d5 100644 --- a/project.py +++ b/project.py @@ -1491,7 +1491,7 @@ class Project(object): 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: