[yum-commits] 2 commits - urlgrabber/grabber.py
zpavlas at osuosl.org
zpavlas at osuosl.org
Fri Feb 1 14:19:17 UTC 2013
urlgrabber/grabber.py | 69 ++++++++++++--------------------------------------
1 file changed, 17 insertions(+), 52 deletions(-)
New commits:
commit 6c07f3ddc58c02a662d3be3133b95a43d5af48b8
Author: Zdenek Pavlas <zpavlas at redhat.com>
Date: Fri Jan 18 10:57:46 2013 +0100
URLGrabError(14) cleanup. BZ 896657
Work around a pycurl bug, so error details are available again.
Remove all but one code paths that were raising URLGrabError(14),
and throwing error details away.
diff --git a/urlgrabber/grabber.py b/urlgrabber/grabber.py
index 5bffb03..1afb2c5 100644
--- a/urlgrabber/grabber.py
+++ b/urlgrabber/grabber.py
@@ -1473,16 +1473,6 @@ class PyCurlFileObject(object):
err = URLGrabError(12, _('Timeout on %s: %s') % (errurl, e))
err.url = errurl
raise err
- elif errcode == 35:
- msg = _("problem making ssl connection")
- err = URLGrabError(14, msg)
- err.url = errurl
- raise err
- elif errcode == 37:
- msg = _("Could not open/read %s") % (errurl)
- err = URLGrabError(14, msg)
- err.url = errurl
- raise err
elif errcode == 42:
# this is probably wrong but ultimately this is what happens
@@ -1493,27 +1483,6 @@ class PyCurlFileObject(object):
# figure out what aborted the pycurl process FIXME
raise KeyboardInterrupt
- elif errcode == 58:
- msg = _("problem with the local client certificate")
- err = URLGrabError(14, msg)
- err.url = errurl
- raise err
-
- elif errcode == 60:
- msg = _("Peer cert cannot be verified or peer cert invalid")
- err = URLGrabError(14, msg)
- err.url = errurl
- raise err
-
- elif errcode == 63:
- if self._error[1]:
- msg = self._error[1]
- else:
- msg = _("Max download size exceeded on %s") % ()
- err = URLGrabError(14, msg)
- err.url = errurl
- raise err
-
else:
pyerr2str = { 5 : _("Couldn't resolve proxy"),
6 : _("Couldn't resolve host"),
@@ -1581,7 +1550,9 @@ class PyCurlFileObject(object):
def _do_open(self):
self.curl_obj = _curl_cache
- self.curl_obj.reset() # reset all old settings away, just in case
+ # reset() clears PYCURL_ERRORBUFFER, and there's no way
+ # to reinitialize it, so better don't do that. BZ 896025
+ #self.curl_obj.reset() # reset all old settings away, just in case
# setup any ranges
self._set_opts()
self._do_grab()
commit d53f2d6ac2b86c09e92fea5977501f6473b35781
Author: Zdenek Pavlas <zpavlas at redhat.com>
Date: Wed Jan 16 13:38:05 2013 +0100
Improve error messages. BZ 832491
Curl does not always provide text descriptions in its error messages.
urlgrabber translates HTTP response codes to text, but not FTP codes.
Add text description of the curl error code as a fallback.
URLGrabError(14, 'FTP Error 530') becomes
URLGrabError(14, 'FTP Error 530 - Authentication failure') or
URLGrabError(14, 'FTP Error 530 - Access denied: 530') when curl is fixed.
Also make server-side exceptions more consistent with other exceptions,
remove failed URL from the message and put it into an .url attribute.
diff --git a/urlgrabber/grabber.py b/urlgrabber/grabber.py
index 80b7e0d..5bffb03 100644
--- a/urlgrabber/grabber.py
+++ b/urlgrabber/grabber.py
@@ -1514,17 +1514,6 @@ class PyCurlFileObject(object):
err.url = errurl
raise err
- elif str(e.args[1]) == '' and code and not 200 <= code <= 299:
- if self.scheme in ['http', 'https']:
- if self.http_code in responses:
- resp = responses[self.http_code]
- msg = 'HTTP Error %s - %s : %s' % (self.http_code, resp, errurl)
- else:
- msg = 'HTTP Error %s : %s ' % (self.http_code, errurl)
- elif self.scheme in ['ftp']:
- msg = 'FTP Error %s : %s ' % (self.http_code, errurl)
- else:
- msg = "Unknown Error: URL=%s , scheme=%s" % (errurl, self.scheme)
else:
pyerr2str = { 5 : _("Couldn't resolve proxy"),
6 : _("Couldn't resolve host"),
@@ -1569,15 +1558,20 @@ class PyCurlFileObject(object):
70 : _("Out of disk space on server"),
73 : _("Remove file exists"),
}
- errstr = str(e.args[1])
- if not errstr:
- errstr = pyerr2str.get(errcode, '<Unknown>')
- msg = 'curl#%s - "%s"' % (errcode, errstr)
- code = errcode
- err = URLGrabError(14, msg)
- err.code = code
- err.exception = e
- raise err
+ errstr = str(e.args[1]) or pyerr2str.get(errcode, '<Unknown>')
+ if code and not 200 <= code <= 299:
+ msg = '%s Error %d - %s' % (self.scheme.upper(), code,
+ self.scheme in ('http', 'https')
+ and responses.get(code) or errstr)
+ else:
+ msg = 'curl#%s - "%s"' % (errcode, errstr)
+ code = errcode
+
+ err = URLGrabError(14, msg)
+ err.url = errurl
+ err.code = code
+ raise err
+
else:
if self._error[1]:
msg = self._error[1]
More information about the Yum-commits
mailing list