D2736: hgweb: use the parsed application path directly

indygreg (Gregory Szorc) phabricator at mercurial-scm.org
Fri Mar 9 14:29:55 EST 2018


This revision was automatically updated to reflect the committed changes.
Closed by commit rHG328d665ef23d: hgweb: use the parsed application path directly (authored by indygreg, committed by ).

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D2736?vs=6742&id=6781

REVISION DETAIL
  https://phab.mercurial-scm.org/D2736

AFFECTED FILES
  mercurial/hgweb/hgweb_mod.py
  mercurial/hgweb/request.py

CHANGE DETAILS

diff --git a/mercurial/hgweb/request.py b/mercurial/hgweb/request.py
--- a/mercurial/hgweb/request.py
+++ b/mercurial/hgweb/request.py
@@ -146,14 +146,13 @@
     # root. We also exclude its path components from PATH_INFO when resolving
     # the dispatch path.
 
-    # TODO the use of trailing slashes in apppath is arguably wrong. We need it
-    # to appease low-level parts of hgweb_mod for now.
     apppath = env['SCRIPT_NAME']
-    if not apppath.endswith('/'):
-        apppath += '/'
 
     if env.get('REPO_NAME'):
-        apppath += env.get('REPO_NAME') + '/'
+        if not apppath.endswith('/'):
+            apppath += '/'
+
+        apppath += env.get('REPO_NAME')
 
     if 'PATH_INFO' in env:
         dispatchparts = env['PATH_INFO'].strip('/').split('/')
diff --git a/mercurial/hgweb/hgweb_mod.py b/mercurial/hgweb/hgweb_mod.py
--- a/mercurial/hgweb/hgweb_mod.py
+++ b/mercurial/hgweb/hgweb_mod.py
@@ -148,7 +148,7 @@
         logourl = self.config('web', 'logourl')
         logoimg = self.config('web', 'logoimg')
         staticurl = (self.config('web', 'staticurl')
-                     or pycompat.sysbytes(wsgireq.url) + 'static/')
+                     or req.apppath + '/static/')
         if not staticurl.endswith('/'):
             staticurl += '/'
 
@@ -170,24 +170,24 @@
         if not self.reponame:
             self.reponame = (self.config('web', 'name', '')
                              or wsgireq.env.get('REPO_NAME')
-                             or wsgireq.url.strip(r'/') or self.repo.root)
+                             or req.apppath or self.repo.root)
 
         def websubfilter(text):
             return templatefilters.websub(text, self.websubtable)
 
         # create the templater
         # TODO: export all keywords: defaults = templatekw.keywords.copy()
         defaults = {
-            'url': pycompat.sysbytes(wsgireq.url),
+            'url': req.apppath + '/',
             'logourl': logourl,
             'logoimg': logoimg,
             'staticurl': staticurl,
             'urlbase': req.advertisedbaseurl,
             'repo': self.reponame,
             'encoding': encoding.encoding,
             'motd': motd,
             'sessionvars': sessionvars,
-            'pathdef': makebreadcrumb(pycompat.sysbytes(wsgireq.url)),
+            'pathdef': makebreadcrumb(req.apppath),
             'style': style,
             'nonce': self.nonce,
         }
@@ -318,8 +318,6 @@
                                if h[0] != 'Content-Security-Policy']
             wsgireq.headers.append(('Content-Security-Policy', rctx.csp))
 
-        wsgireq.url = pycompat.sysstr(req.apppath)
-
         if r'PATH_INFO' in wsgireq.env:
             parts = wsgireq.env[r'PATH_INFO'].strip(r'/').split(r'/')
             repo_parts = wsgireq.env.get(r'REPO_NAME', r'').split(r'/')



To: indygreg, #hg-reviewers, durin42
Cc: mercurial-devel


More information about the Mercurial-devel mailing list