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): def _resolveFetchUrl(self): url = self.fetchUrl.rstrip('/') manifestUrl = self.manifestUrl.rstrip('/') - p = manifestUrl.startswith('persistent-http') - if p: - manifestUrl = manifestUrl[len('persistent-'):] - - # urljoin will get confused if there is no scheme in the base url - # ie, if manifestUrl is of the form + # urljoin will gets confused over quite a few things. The ones we care + # about here are: + # * no scheme in the base url, like + # * persistent-https:// + # We handle this by replacing these with obscure protocols + # and then replacing them with the original when we are done. + # gopher -> + # wais -> persistent-https if manifestUrl.find(':') != manifestUrl.find('/') - 1: manifestUrl = 'gopher://' + manifestUrl + manifestUrl = re.sub(r'^persistent-https://', 'wais://', manifestUrl) url = urllib.parse.urljoin(manifestUrl, url) url = re.sub(r'^gopher://', '', url) - if p: - url = 'persistent-' + url + url = re.sub(r'^wais://', 'persistent-https://', url) return url def ToRemoteSpec(self, projectName):