summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--manifest_xml.py18
1 files changed, 10 insertions, 8 deletions
diff --git a/manifest_xml.py b/manifest_xml.py
index f2ac77a5..d496337c 100644
--- a/manifest_xml.py
+++ b/manifest_xml.py
@@ -80,18 +80,20 @@ class _XmlRemote(object):
80 def _resolveFetchUrl(self): 80 def _resolveFetchUrl(self):
81 url = self.fetchUrl.rstrip('/') 81 url = self.fetchUrl.rstrip('/')
82 manifestUrl = self.manifestUrl.rstrip('/') 82 manifestUrl = self.manifestUrl.rstrip('/')
83 p = manifestUrl.startswith('persistent-http') 83 # urljoin will gets confused over quite a few things. The ones we care
84 if p: 84 # about here are:
85 manifestUrl = manifestUrl[len('persistent-'):] 85 # * no scheme in the base url, like <hostname:port>
86 86 # * persistent-https://
87 # urljoin will get confused if there is no scheme in the base url 87 # We handle this by replacing these with obscure protocols
88 # ie, if manifestUrl is of the form <hostname:port> 88 # and then replacing them with the original when we are done.
89 # gopher -> <none>
90 # wais -> persistent-https
89 if manifestUrl.find(':') != manifestUrl.find('/') - 1: 91 if manifestUrl.find(':') != manifestUrl.find('/') - 1:
90 manifestUrl = 'gopher://' + manifestUrl 92 manifestUrl = 'gopher://' + manifestUrl
93 manifestUrl = re.sub(r'^persistent-https://', 'wais://', manifestUrl)
91 url = urllib.parse.urljoin(manifestUrl, url) 94 url = urllib.parse.urljoin(manifestUrl, url)
92 url = re.sub(r'^gopher://', '', url) 95 url = re.sub(r'^gopher://', '', url)
93 if p: 96 url = re.sub(r'^wais://', 'persistent-https://', url)
94 url = 'persistent-' + url
95 return url 97 return url
96 98
97 def ToRemoteSpec(self, projectName): 99 def ToRemoteSpec(self, projectName):