Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/RepositoryFilter.java')
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/RepositoryFilter.java9
1 files changed, 6 insertions, 3 deletions
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/RepositoryFilter.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/RepositoryFilter.java
index 3e0a572564..1462593858 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/RepositoryFilter.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/RepositoryFilter.java
@@ -154,10 +154,8 @@ public class RepositoryFilter implements Filter {
static void sendError(int statusCode, HttpServletRequest req,
HttpServletResponse rsp) throws IOException {
String svc = req.getParameter("service");
- String accept = req.getHeader(HDR_ACCEPT);
- if (svc != null && svc.startsWith("git-") && accept != null
- && accept.contains("application/x-" + svc + "-advertisement")) {
+ if (req.getRequestURI().endsWith("/info/refs") && isService(svc)) {
// Smart HTTP service request, use an ERR response.
rsp.setContentType("application/x-" + svc + "-advertisement");
@@ -170,6 +168,7 @@ public class RepositoryFilter implements Filter {
return;
}
+ String accept = req.getHeader(HDR_ACCEPT);
if (accept != null && accept.contains(UploadPackServlet.RSP_TYPE)) {
// An upload-pack wants ACK or NAK, return ERR
// and the client will print this instead.
@@ -188,6 +187,10 @@ public class RepositoryFilter implements Filter {
rsp.sendError(statusCode);
}
+ private static boolean isService(String svc) {
+ return "git-upload-pack".equals(svc) || "git-receive-pack".equals(svc);
+ }
+
private static String translate(int statusCode) {
switch (statusCode) {
case SC_NOT_FOUND:

Back to the top