[yum-commits] urlgrabber/grabber.py

skvidal at osuosl.org skvidal at osuosl.org
Tue Aug 4 16:00:28 UTC 2009


 urlgrabber/grabber.py |   12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

New commits:
commit 81d5f0fe31eb840f5e9b49afbb319d80ab03d107
Author: Seth Vidal <skvidal at fedoraproject.org>
Date:   Tue Aug 4 11:57:49 2009 -0400

    handle timeouts more correctly (with the exception)
    and set timeouts to be connect timeouts since libcurl seems to actually honor timeouts - as opposed
    to urllib.
    closes rh bug # 515497

diff --git a/urlgrabber/grabber.py b/urlgrabber/grabber.py
index cf51dff..5e3c0d7 100644
--- a/urlgrabber/grabber.py
+++ b/urlgrabber/grabber.py
@@ -1542,13 +1542,12 @@ class PyCurlFileObject():
         # maybe to be options later
         self.curl_obj.setopt(pycurl.FOLLOWLOCATION, 1)
         self.curl_obj.setopt(pycurl.MAXREDIRS, 5)
-        self.curl_obj.setopt(pycurl.CONNECTTIMEOUT, 30)
         
         # timeouts
         timeout = 300
         if opts.timeout:
-            timeout = int(opts.timeout)
-        self.curl_obj.setopt(pycurl.TIMEOUT, timeout)
+            self.curl_obj.setopt(pycurl.CONNECTTIMEOUT, timeout)
+
         # ssl options
         if self.scheme == 'https':
             if opts.ssl_ca_cert: # this may do ZERO with nss  according to curl docs
@@ -1607,12 +1606,17 @@ class PyCurlFileObject():
             # to other URLGrabErrors from 
             # http://curl.haxx.se/libcurl/c/libcurl-errors.html
             # this covers e.args[0] == 22 pretty well - which will be common
+            if e.args[0] == 28:
+                err = URLGrabError(12, _('Timeout on %s: %s') % (self.url, e))
+                err.url = self.url
+                raise err
+            code = self.http_code                
             if str(e.args[1]) == '': # fake it until you make it
                 msg = 'HTTP Error %s : %s ' % (self.http_code, self.url)
             else:
                 msg = str(e.args[1])
             err = URLGrabError(14, msg)
-            err.code = self.http_code
+            err.code = code
             err.exception = e
             raise err
             


More information about the Yum-commits mailing list