[Yum-devel] [PATCH] User-Agent: add simultaneous connection count and limit

Zdeněk Pavlas zpavlas at redhat.com
Wed May 23 09:12:28 UTC 2012


Internal 'user_agent_x' option is appended to the user agent.
Parallel downloader sets this before starting a connection,
so server logs contain something like:

User-Agent: urlgrabber/3.9.1 yum/3.4.3; connection 1 of 2
(at most 2 connections allowed, this is the 1st one)
---
 urlgrabber/grabber.py |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/urlgrabber/grabber.py b/urlgrabber/grabber.py
index c5470b1..4764468 100644
--- a/urlgrabber/grabber.py
+++ b/urlgrabber/grabber.py
@@ -919,6 +919,7 @@ class URLGrabberOptions:
         self.close_connection = 0
         self.range = None
         self.user_agent = 'urlgrabber/%s' % __version__
+        self.user_agent_x = ''
         self.ip_resolve = None
         self.keepalive = 1
         self.proxies = None
@@ -1314,7 +1315,7 @@ class PyCurlFileObject(object):
         if DEBUG:
             self.curl_obj.setopt(pycurl.VERBOSE, True)
         if opts.user_agent:
-            self.curl_obj.setopt(pycurl.USERAGENT, opts.user_agent)
+            self.curl_obj.setopt(pycurl.USERAGENT, opts.user_agent + opts.user_agent_x)
         if opts.ip_resolve:
             # Default is: IPRESOLVE_WHATEVER
             ipr = opts.ip_resolve.lower()
@@ -2009,7 +2010,7 @@ class _ExternalDownloader:
         'url', 'filename',
         'timeout', 'close_connection', 'keepalive',
         'throttle', 'bandwidth', 'range', 'reget',
-        'user_agent', 'http_headers', 'ftp_headers',
+        'user_agent', 'user_agent_x', 'http_headers', 'ftp_headers',
         'proxy', 'prefix', 'username', 'password',
         'ssl_ca_cert',
         'ssl_cert', 'ssl_cert_type',
@@ -2138,6 +2139,7 @@ def parallel_wait(meter = 'text'):
         host_con[key] = host_con.get(key, 0) + 1
         opts.tries = tries
         opts.progress_obj = meter and meter.newMeter()
+        opts.user_agent_x = '; connection %d of %d' % (host_con[key], limit)
         if DEBUG: DEBUG.info('attempt %i/%s: %s', opts.tries, opts.retry, opts.url)
         dl.start(opts)
 
-- 
1.7.4.4



More information about the Yum-devel mailing list