Merge "Do not return 403 when clicking on Gitweb breadcrumb" into stable-2.10
diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/gitweb/GitWebServlet.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/gitweb/GitWebServlet.java
index f593caca..8f0a202 100644
--- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/gitweb/GitWebServlet.java
+++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/gitweb/GitWebServlet.java
@@ -29,6 +29,7 @@
 
 package com.google.gerrit.httpd.gitweb;
 
+import com.google.gerrit.common.PageLinks;
 import com.google.gerrit.common.data.GerritConfig;
 import com.google.gerrit.extensions.restapi.Url;
 import com.google.gerrit.httpd.GitWebConfig;
@@ -79,6 +80,8 @@
   private static final Logger log =
       LoggerFactory.getLogger(GitWebServlet.class);
 
+  private static final String PROJECT_LIST_ACTION = "project_list";
+
   private final Set<String> deniedActions;
   private final int bufferSize = 8192;
   private final File gitwebCgi;
@@ -119,7 +122,6 @@
 
     deniedActions.add("forks");
     deniedActions.add("opml");
-    deniedActions.add("project_list");
     deniedActions.add("project_index");
 
     _env = new EnvList();
@@ -363,6 +365,12 @@
       return;
     }
 
+    if (params.get("a").equals(PROJECT_LIST_ACTION)) {
+      rsp.sendRedirect(req.getContextPath() + "/#" + PageLinks.ADMIN_PROJECTS
+          + "?filter=" + Url.encode(params.get("pf") + "/"));
+      return;
+    }
+
     String name = params.get("p");
     if (name == null) {
       rsp.sendError(HttpServletResponse.SC_NOT_FOUND);