Revision: 8426
Author: [email protected]
Date: Wed Jul 28 10:19:37 2010
Log: Call GZIPOutputStream.finish() from RpcServlet.processPost() to ensure
the data received by the browser is properly formatted.
Patch by: bobv
Review by: tms
Review at http://gwt-code-reviews.appspot.com/722801
http://code.google.com/p/google-web-toolkit/source/detail?r=8426
Modified:
/trunk/user/src/com/google/gwt/rpc/server/RpcServlet.java
=======================================
--- /trunk/user/src/com/google/gwt/rpc/server/RpcServlet.java Thu Jul 22
12:08:40 2010
+++ /trunk/user/src/com/google/gwt/rpc/server/RpcServlet.java Wed Jul 28
10:19:37 2010
@@ -203,12 +203,14 @@
response.setCharacterEncoding("UTF-8");
// Configure the OutputStream based on configuration and capabilities
+ boolean canCompress = RPCServletUtils.acceptsGzipEncoding(request)
+ && shouldCompressResponse(request, response);
+
OutputStream out;
if (DUMP_PAYLOAD) {
out = new ByteArrayOutputStream();
- } else if (RPCServletUtils.acceptsGzipEncoding(request)
- && shouldCompressResponse(request, response)) {
+ } else if (canCompress) {
RPCServletUtils.setGzipEncodingHeader(response);
out = new GZIPOutputStream(response.getOutputStream());
@@ -223,6 +225,13 @@
byte[] bytes = ((ByteArrayOutputStream) out).toByteArray();
System.out.println(new String(bytes, "UTF-8"));
response.getOutputStream().write(bytes);
+ } else if (canCompress) {
+ /*
+ * We want to write the end of the gzip data, but not close the
underlying
+ * OutputStream in case there are servlet filters that want to write
+ * headers after processPost().
+ */
+ ((GZIPOutputStream) out).finish();
}
}
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors