summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--java/com/google/gerrit/httpd/XsrfCookieFilter.java8
-rw-r--r--java/com/google/gerrit/httpd/raw/StaticModule.java47
2 files changed, 31 insertions, 24 deletions
diff --git a/java/com/google/gerrit/httpd/XsrfCookieFilter.java b/java/com/google/gerrit/httpd/XsrfCookieFilter.java
index d15ecacd59..079efa4023 100644
--- a/java/com/google/gerrit/httpd/XsrfCookieFilter.java
+++ b/java/com/google/gerrit/httpd/XsrfCookieFilter.java
@@ -32,6 +32,7 @@ import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import org.eclipse.jgit.http.server.GitSmartHttpTools;
@Singleton
public class XsrfCookieFilter implements Filter {
@@ -50,8 +51,11 @@ public class XsrfCookieFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse rsp, FilterChain chain)
throws IOException, ServletException {
- WebSession s = user.get().isIdentifiedUser() ? session.get() : null;
- setXsrfTokenCookie((HttpServletRequest) req, (HttpServletResponse) rsp, s);
+ HttpServletRequest httpRequest = (HttpServletRequest) req;
+ if (!GitSmartHttpTools.isGitClient(httpRequest)) {
+ WebSession s = user.get().isIdentifiedUser() ? session.get() : null;
+ setXsrfTokenCookie(httpRequest, (HttpServletResponse) rsp, s);
+ }
chain.doFilter(req, rsp);
}
diff --git a/java/com/google/gerrit/httpd/raw/StaticModule.java b/java/com/google/gerrit/httpd/raw/StaticModule.java
index 0d4c67e8ee..7f2161d4b2 100644
--- a/java/com/google/gerrit/httpd/raw/StaticModule.java
+++ b/java/com/google/gerrit/httpd/raw/StaticModule.java
@@ -54,6 +54,7 @@ import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;
+import org.eclipse.jgit.http.server.GitSmartHttpTools;
import org.eclipse.jgit.lib.Config;
public class StaticModule extends ServletModule {
@@ -405,34 +406,36 @@ public class StaticModule extends ServletModule {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
- GuiceFilterRequestWrapper reqWrapper = new GuiceFilterRequestWrapper(req);
- String path = pathInfo(req);
+ if (!GitSmartHttpTools.isGitClient(req)) {
+ GuiceFilterRequestWrapper reqWrapper = new GuiceFilterRequestWrapper(req);
+ String path = pathInfo(req);
- // Special case assets during development that are built by Bazel and not
- // served out of the source tree.
- //
- // In the war case, these are either inlined, or live under
- // /polygerrit_ui in the war file, so we can just treat them as normal
- // assets.
- if (paths.isDev()) {
- if (path.startsWith("/bower_components/")) {
- bowerComponentServlet.service(reqWrapper, res);
+ // Special case assets during development that are built by Bazel and not
+ // served out of the source tree.
+ //
+ // In the war case, these are either inlined, or live under
+ // /polygerrit_ui in the war file, so we can just treat them as normal
+ // assets.
+ if (paths.isDev()) {
+ if (path.startsWith("/bower_components/")) {
+ bowerComponentServlet.service(reqWrapper, res);
+ return;
+ } else if (path.startsWith("/fonts/")) {
+ fontServlet.service(reqWrapper, res);
+ return;
+ }
+ }
+
+ if (isPolyGerritIndex(path)) {
+ polyGerritIndex.service(reqWrapper, res);
return;
- } else if (path.startsWith("/fonts/")) {
- fontServlet.service(reqWrapper, res);
+ }
+ if (isPolyGerritAsset(path)) {
+ polygerritUI.service(reqWrapper, res);
return;
}
}
- if (isPolyGerritIndex(path)) {
- polyGerritIndex.service(reqWrapper, res);
- return;
- }
- if (isPolyGerritAsset(path)) {
- polygerritUI.service(reqWrapper, res);
- return;
- }
-
chain.doFilter(req, res);
}