aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/InfoRefsServlet.java3
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ReceivePackServlet.java2
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/SmartOutputStream.java15
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/SmartServiceInfoRefs.java2
-rw-r--r--org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/UploadPackServlet.java2
5 files changed, 16 insertions, 8 deletions
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/InfoRefsServlet.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/InfoRefsServlet.java
index ffaa13153c..52f928548b 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/InfoRefsServlet.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/InfoRefsServlet.java
@@ -72,7 +72,8 @@ class InfoRefsServlet extends HttpServlet {
final Repository db = getRepository(req);
final OutputStreamWriter out = new OutputStreamWriter(
- new SmartOutputStream(req, rsp), Constants.CHARSET);
+ new SmartOutputStream(req, rsp, true),
+ Constants.CHARSET);
final RefAdvertiser adv = new RefAdvertiser() {
@Override
protected void writeOne(final CharSequence line) throws IOException {
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ReceivePackServlet.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ReceivePackServlet.java
index 10cadd7bb0..3d6c35b0b6 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ReceivePackServlet.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ReceivePackServlet.java
@@ -171,7 +171,7 @@ class ReceivePackServlet extends HttpServlet {
return;
}
- SmartOutputStream out = new SmartOutputStream(req, rsp) {
+ SmartOutputStream out = new SmartOutputStream(req, rsp, true) {
@Override
public void flush() throws IOException {
doFlush();
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/SmartOutputStream.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/SmartOutputStream.java
index c39b78900d..145c63bcaf 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/SmartOutputStream.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/SmartOutputStream.java
@@ -70,22 +70,29 @@ class SmartOutputStream extends TemporaryBuffer {
private static final int LIMIT = 32 * 1024;
private final HttpServletRequest req;
-
private final HttpServletResponse rsp;
-
+ private boolean compressStream;
private boolean startedOutput;
SmartOutputStream(final HttpServletRequest req,
- final HttpServletResponse rsp) {
+ final HttpServletResponse rsp,
+ boolean compressStream) {
super(LIMIT);
this.req = req;
this.rsp = rsp;
+ this.compressStream = compressStream;
}
@Override
protected OutputStream overflow() throws IOException {
startedOutput = true;
- return rsp.getOutputStream();
+
+ OutputStream out = rsp.getOutputStream();
+ if (compressStream && acceptsGzipEncoding(req)) {
+ rsp.setHeader(HDR_CONTENT_ENCODING, ENCODING_GZIP);
+ out = new GZIPOutputStream(out);
+ }
+ return out;
}
public void close() throws IOException {
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/SmartServiceInfoRefs.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/SmartServiceInfoRefs.java
index 907b328db9..4810753779 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/SmartServiceInfoRefs.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/SmartServiceInfoRefs.java
@@ -122,7 +122,7 @@ abstract class SmartServiceInfoRefs implements Filter {
throws IOException {
final HttpServletRequest req = (HttpServletRequest) request;
final HttpServletResponse res = (HttpServletResponse) response;
- final SmartOutputStream buf = new SmartOutputStream(req, res);
+ final SmartOutputStream buf = new SmartOutputStream(req, res, true);
try {
res.setContentType(infoRefsResultType(svc));
diff --git a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/UploadPackServlet.java b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/UploadPackServlet.java
index 046db45766..c5272b55eb 100644
--- a/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/UploadPackServlet.java
+++ b/org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/UploadPackServlet.java
@@ -172,7 +172,7 @@ class UploadPackServlet extends HttpServlet {
return;
}
- SmartOutputStream out = new SmartOutputStream(req, rsp) {
+ SmartOutputStream out = new SmartOutputStream(req, rsp, false) {
@Override
public void flush() throws IOException {
doFlush();