Browse Source

Merge changes Ic2b78ba9,Ia13e63ed

* changes:
  Use '406 Not Acceptable' when info/refs is disabled
  Compress large /info/refs responses on HTTP
stable-2.2
Shawn O. Pearce 12 years ago committed by Gerrit Code Review @ Eclipse.org
parent
commit
eb5b506acd
  1. 2
      org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/GitFilter.java
  2. 3
      org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/InfoRefsServlet.java
  3. 2
      org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ReceivePackServlet.java
  4. 15
      org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/SmartOutputStream.java
  5. 2
      org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/SmartServiceInfoRefs.java
  6. 2
      org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/UploadPackServlet.java

2
org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/GitFilter.java

@ -225,7 +225,7 @@ public class GitFilter extends MetaFilter {
refs = refs.through(new AsIsFileFilter(asIs)); refs = refs.through(new AsIsFileFilter(asIs));
refs.with(new InfoRefsServlet()); refs.with(new InfoRefsServlet());
} else } else
refs.with(new ErrorServlet(HttpServletResponse.SC_FORBIDDEN)); refs.with(new ErrorServlet(HttpServletResponse.SC_NOT_ACCEPTABLE));
if (asIs != AsIsFileService.DISABLED) { if (asIs != AsIsFileService.DISABLED) {
final IsLocalFilter mustBeLocal = new IsLocalFilter(); final IsLocalFilter mustBeLocal = new IsLocalFilter();

3
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 Repository db = getRepository(req);
final OutputStreamWriter out = new OutputStreamWriter( final OutputStreamWriter out = new OutputStreamWriter(
new SmartOutputStream(req, rsp), Constants.CHARSET); new SmartOutputStream(req, rsp, true),
Constants.CHARSET);
final RefAdvertiser adv = new RefAdvertiser() { final RefAdvertiser adv = new RefAdvertiser() {
@Override @Override
protected void writeOne(final CharSequence line) throws IOException { protected void writeOne(final CharSequence line) throws IOException {

2
org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/ReceivePackServlet.java

@ -171,7 +171,7 @@ class ReceivePackServlet extends HttpServlet {
return; return;
} }
SmartOutputStream out = new SmartOutputStream(req, rsp) { SmartOutputStream out = new SmartOutputStream(req, rsp, true) {
@Override @Override
public void flush() throws IOException { public void flush() throws IOException {
doFlush(); doFlush();

15
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 static final int LIMIT = 32 * 1024;
private final HttpServletRequest req; private final HttpServletRequest req;
private final HttpServletResponse rsp; private final HttpServletResponse rsp;
private boolean compressStream;
private boolean startedOutput; private boolean startedOutput;
SmartOutputStream(final HttpServletRequest req, SmartOutputStream(final HttpServletRequest req,
final HttpServletResponse rsp) { final HttpServletResponse rsp,
boolean compressStream) {
super(LIMIT); super(LIMIT);
this.req = req; this.req = req;
this.rsp = rsp; this.rsp = rsp;
this.compressStream = compressStream;
} }
@Override @Override
protected OutputStream overflow() throws IOException { protected OutputStream overflow() throws IOException {
startedOutput = true; 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 { public void close() throws IOException {

2
org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/SmartServiceInfoRefs.java

@ -122,7 +122,7 @@ abstract class SmartServiceInfoRefs implements Filter {
throws IOException { throws IOException {
final HttpServletRequest req = (HttpServletRequest) request; final HttpServletRequest req = (HttpServletRequest) request;
final HttpServletResponse res = (HttpServletResponse) response; final HttpServletResponse res = (HttpServletResponse) response;
final SmartOutputStream buf = new SmartOutputStream(req, res); final SmartOutputStream buf = new SmartOutputStream(req, res, true);
try { try {
res.setContentType(infoRefsResultType(svc)); res.setContentType(infoRefsResultType(svc));

2
org.eclipse.jgit.http.server/src/org/eclipse/jgit/http/server/UploadPackServlet.java

@ -172,7 +172,7 @@ class UploadPackServlet extends HttpServlet {
return; return;
} }
SmartOutputStream out = new SmartOutputStream(req, rsp) { SmartOutputStream out = new SmartOutputStream(req, rsp, false) {
@Override @Override
public void flush() throws IOException { public void flush() throws IOException {
doFlush(); doFlush();

Loading…
Cancel
Save