Merge branch 'stable-2.10' * stable-2.10: Fix login redirect for non default (root) context Conflicts: gerrit-httpd/src/main/java/com/google/gerrit/httpd/auth/become/BecomeAnyAccountLoginServlet.java Change-Id: I5b6479eeaaca467b68c568e7bd372e61198e2165
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/Gerrit.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/Gerrit.java index 083b1ae..8e5374c 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/Gerrit.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/Gerrit.java
@@ -344,14 +344,7 @@ token = token.substring(1); } - UrlBuilder builder = new UrlBuilder(); - builder.setProtocol(Location.getProtocol()); - builder.setHost(Location.getHost()); - String port = Location.getPort(); - if (port != null && !port.isEmpty()) { - builder.setPort(Integer.parseInt(port)); - } - return builder.buildString() + ("/login/" + URL.encodePathSegment("#/" + token)); + return selfRedirect("login/") + URL.encodePathSegment("#/" + token); } public static String selfRedirect(String suffix) {
diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/auth/become/BecomeAnyAccountLoginServlet.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/auth/become/BecomeAnyAccountLoginServlet.java index 0349656..b8a8092 100644 --- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/auth/become/BecomeAnyAccountLoginServlet.java +++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/auth/become/BecomeAnyAccountLoginServlet.java
@@ -16,8 +16,6 @@ import static com.google.gerrit.reviewdb.client.AccountExternalId.SCHEME_USERNAME; -import com.google.common.base.MoreObjects; -import com.google.common.base.Strings; import com.google.gerrit.common.PageLinks; import com.google.gerrit.extensions.registration.DynamicItem; import com.google.gerrit.httpd.HtmlDomUtil; @@ -120,9 +118,8 @@ if (res != null) { webSession.get().login(res, false); final StringBuilder rdr = new StringBuilder(); - rdr.append(MoreObjects.firstNonNull( - Strings.emptyToNull(req.getContextPath()), - "/")); + rdr.append(req.getContextPath()); + rdr.append("/"); if (IS_DEV && req.getParameter("gwt.codesvr") != null) { if (rdr.indexOf("?") < 0) { rdr.append("?");
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 e1f68cd..9a7cab0 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
@@ -409,8 +409,13 @@ } private static String getLoginRedirectUrl(HttpServletRequest req) { - String loginUrl = req.getContextPath() + "/login/"; - String token = req.getRequestURI().substring(1); + String contextPath = req.getContextPath(); + String loginUrl = contextPath + "/login/"; + String token = req.getRequestURI(); + if (!contextPath.isEmpty()) { + token = token.substring(contextPath.length()); + } + String queryString = req.getQueryString(); if (queryString != null && !queryString.isEmpty()) { token = token.concat("?" + queryString);