Make sure the repository names don't have slashes at the at or else in some
authorVincent Wagelaar <vincent@ricardis.tudelft.nl>
Tue, 30 Aug 2005 21:58:44 +0200
changeset 1181 4f5001f5b4c3
parent 1180 fe3eb1628c40
child 1182 24d553b598e8
Make sure the repository names don't have slashes at the at or else in some cases env[path_info] will not find an defined repository. REQUEST_URI can contain a query_string appending the repository name would lead to corrupt urls.
mercurial/hgweb.py
--- a/mercurial/hgweb.py	Tue Aug 30 18:23:39 2005 +0200
+++ b/mercurial/hgweb.py	Tue Aug 30 21:58:44 2005 +0200
@@ -927,15 +927,18 @@
 # This is a stopgap
 class hgwebdir:
     def __init__(self, config):
+        def cleannames(items):
+            return [(name.strip('/'), path) for name, path in items]
+
         if type(config) == type([]):
-            self.repos = config
+            self.repos = cleannames(config)
         elif type(config) == type({}):
-            self.repos = config.items()
+            self.repos = cleannames(config.items())
             self.repos.sort()
         else:
             cp = ConfigParser.SafeConfigParser()
             cp.read(config)
-            self.repos = cp.items("paths")
+            self.repos = cleannames(cp.items("paths"))
             self.repos.sort()
 
     def run(self, req=hgrequest()):
@@ -956,7 +959,7 @@
                 u.readconfig(file(os.path.join(path, '.hg', 'hgrc')))
                 get = u.config
 
-                url = ('/'.join([req.env["REQUEST_URI"], name])
+                url = ('/'.join([req.env["REQUEST_URI"].split('?')[0], name])
                        .replace("//", "/"))
 
                 yield dict(contact=get("web", "contact") or