Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Bartel2013-11-07 07:29:37 +0000
committerJan Bartel2013-11-07 07:29:37 +0000
commitef11dbd1a829a022b10923005d61af2eaea7f356 (patch)
tree0950b5936c7c615f9c600fe679e56fcc7ca0b9dc
parent808b8aa7e35ec150fbf5e4019df52bcfd92c12cf (diff)
downloadorg.eclipse.jetty.project-ef11dbd1a829a022b10923005d61af2eaea7f356.tar.gz
org.eclipse.jetty.project-ef11dbd1a829a022b10923005d61af2eaea7f356.tar.xz
org.eclipse.jetty.project-ef11dbd1a829a022b10923005d61af2eaea7f356.zip
421197 GZIPOutputStream is not thread safe
-rw-r--r--jetty-servlets/src/main/java/org/eclipse/jetty/servlets/GzipFilter.java25
1 files changed, 24 insertions, 1 deletions
diff --git a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/GzipFilter.java b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/GzipFilter.java
index 6c3fa088eb..9cd07d2a7f 100644
--- a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/GzipFilter.java
+++ b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/GzipFilter.java
@@ -433,7 +433,30 @@ public class GzipFilter extends UserAgentFilter
@Override
protected DeflaterOutputStream createStream() throws IOException
{
- return new GZIPOutputStream(_response.getOutputStream(),_bufferSize);
+ return new GZIPOutputStream(_response.getOutputStream(),_bufferSize)
+ {
+ /**
+ * Work around a bug in the jvm GzipOutputStream whereby it is not
+ * thread safe when thread A calls finish, but thread B is writing
+ * @see java.util.zip.GZIPOutputStream#finish()
+ */
+ @Override
+ public synchronized void finish() throws IOException
+ {
+ super.finish();
+ }
+
+ /**
+ * Work around a bug in the jvm GzipOutputStream whereby it is not
+ * thread safe when thread A calls close(), but thread B is writing
+ * @see java.util.zip.GZIPOutputStream#finish()
+ */
+ @Override
+ public void close() throws IOException
+ {
+ super.close();
+ }
+ };
}
};
}

Back to the top