mercurial/hgweb/request.py
changeset 36898 d0b0fedbfb53
parent 36897 d7fd203e36cc
child 36899 e67a2e05fa8a
--- a/mercurial/hgweb/request.py	Sun Mar 11 13:11:13 2018 -0700
+++ b/mercurial/hgweb/request.py	Sun Mar 11 13:38:56 2018 -0700
@@ -138,11 +138,12 @@
     apppath = attr.ib()
     # List of path parts to be used for dispatch.
     dispatchparts = attr.ib()
-    # URL path component (no query string) used for dispatch.
+    # URL path component (no query string) used for dispatch. Can be
+    # ``None`` to signal no path component given to the request, an
+    # empty string to signal a request to the application's root URL,
+    # or a string not beginning with ``/`` containing the requested
+    # path under the application.
     dispatchpath = attr.ib()
-    # Whether there is a path component to this request. This can be true
-    # when ``dispatchpath`` is empty due to REPO_NAME muckery.
-    havepathinfo = attr.ib()
     # The name of the repository being accessed.
     reponame = attr.ib()
     # Raw query string (part after "?" in URL).
@@ -246,12 +247,18 @@
 
         apppath = apppath.rstrip('/') + repoprefix
         dispatchparts = dispatchpath.strip('/').split('/')
-    elif env.get('PATH_INFO', '').strip('/'):
-        dispatchparts = env['PATH_INFO'].strip('/').split('/')
+        dispatchpath = '/'.join(dispatchparts)
+
+    elif 'PATH_INFO' in env:
+        if env['PATH_INFO'].strip('/'):
+            dispatchparts = env['PATH_INFO'].strip('/').split('/')
+            dispatchpath = '/'.join(dispatchparts)
+        else:
+            dispatchparts = []
+            dispatchpath = ''
     else:
         dispatchparts = []
-
-    dispatchpath = '/'.join(dispatchparts)
+        dispatchpath = None
 
     querystring = env.get('QUERY_STRING', '')
 
@@ -293,7 +300,6 @@
                          remotehost=env.get('REMOTE_HOST'),
                          apppath=apppath,
                          dispatchparts=dispatchparts, dispatchpath=dispatchpath,
-                         havepathinfo='PATH_INFO' in env,
                          reponame=reponame,
                          querystring=querystring,
                          qsparams=qsparams,