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);