File yum-3.4.3-preserve-queryparams-in-urls.patch of Package yum.8574
>From 964f75c66170d7d5aa860f2dd37d5a079f900bde Mon Sep 17 00:00:00 2001
From: Michael Calmer <mc@suse.de>
Date: Fri, 12 Sep 2014 13:05:04 +0200
Subject: [PATCH] preserve queryparams in urls
Some CDN do token authentication by appending a token to the URL
as query parameter. So the baseurl could be something like:
https://host.domain.top/path/?abcdef1234567890
Simply appending the relative part to it will result in an invalid URL.
---
yum/yumRepo.py | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
Index: yum-3.4.3/yum/yumRepo.py
===================================================================
--- yum-3.4.3.orig/yum/yumRepo.py
+++ yum-3.4.3/yum/yumRepo.py
@@ -677,11 +677,11 @@ class YumRepository(Repository, config.R
if url in ['', None]:
continue
url = parser.varReplace(url, self.yumvar)
- if url[-1] != '/':
- url= url + '/'
try:
# This started throwing ValueErrors, BZ 666826
(s,b,p,q,f,o) = urlparse.urlparse(url)
+ if p[-1] != '/':
+ p = p + '/'
except (ValueError, IndexError, KeyError), e:
s = 'blah'
@@ -689,7 +689,7 @@ class YumRepository(Repository, config.R
skipped = url
continue
else:
- goodurls.append(url)
+ goodurls.append(urlparse.urlunparse((s,b,p,q,f,o)))
if skipped is not None:
# Caller cleans up for us.
@@ -807,7 +807,7 @@ class YumRepository(Repository, config.R
size=size,
**ugopts)
- remote = url + '/' + relative
+ remote = urlparse.urlunsplit((scheme, netloc, path + '/' + relative, query, fragid))
try:
result = ug.urlgrab(misc.to_utf8(remote), local,