summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2007-01-04 03:11:39 +0000
committerZac Medico <zmedico@gentoo.org>2007-01-04 03:11:39 +0000
commit20df969c2cda9a0b524e3f18ec2a211be7a1722f (patch)
treef440462ef65d2589a37e75cf8ec350dd94a1dc8b /pym/getbinpkg.py
parentExport EBUILD_PHASE="" when running misc-function.sh in order to prevent bogu... (diff)
downloadportage-multirepo-20df969c2cda9a0b524e3f18ec2a211be7a1722f.tar.gz
portage-multirepo-20df969c2cda9a0b524e3f18ec2a211be7a1722f.tar.bz2
portage-multirepo-20df969c2cda9a0b524e3f18ec2a211be7a1722f.zip
When fetching metadata from a binhost, reconnect if the http server closes the connection before sending a valid response. Thanks to ranger for reporting.
svn path=/main/trunk/; revision=5458
Diffstat (limited to 'pym/getbinpkg.py')
-rw-r--r--pym/getbinpkg.py16
1 files changed, 14 insertions, 2 deletions
diff --git a/pym/getbinpkg.py b/pym/getbinpkg.py
index 729525c0..058919bf 100644
--- a/pym/getbinpkg.py
+++ b/pym/getbinpkg.py
@@ -522,8 +522,20 @@ def dir_get_metadata(baseurl, conn=None, chunk_size=3000, verbose=1, usingcache=
(x not in metadata[baseurl]["data"].keys())):
sys.stderr.write(yellow("x"))
metadata[baseurl]["modified"] = 1
- myid = file_get_metadata(baseurl+"/"+x, conn, chunk_size)
-
+ for retry in xrange(3):
+ try:
+ myid = file_get_metadata(
+ "/".join((baseurl.rstrip("/"), x.lstrip("/"))),
+ conn, chunk_size)
+ break
+ except httplib.BadStatusLine:
+ # Sometimes this error is thrown from conn.getresponse() in
+ # make_http_request(). The docstring for this error in
+ # httplib.py says "Presumably, the server closed the
+ # connection before sending a valid response".
+ conn, protocol, address, params, headers = create_conn(
+ baseurl)
+
if myid[0]:
metadata[baseurl]["data"][x] = make_metadata_dict(myid)
elif verbose: