diff options
author | Jan Bartel | 2013-11-07 07:29:37 +0000 |
---|---|---|
committer | Jan Bartel | 2013-11-07 07:29:37 +0000 |
commit | ef11dbd1a829a022b10923005d61af2eaea7f356 (patch) | |
tree | 0950b5936c7c615f9c600fe679e56fcc7ca0b9dc | |
parent | 808b8aa7e35ec150fbf5e4019df52bcfd92c12cf (diff) | |
download | org.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.java | 25 |
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(); + } + }; } }; } |