From 4f074f329a2985d444b482b790b961cca083694b Mon Sep 17 00:00:00 2001 From: hns Date: Fri, 28 Jan 2005 13:52:44 +0000 Subject: [PATCH] Skip response closing and writing if the response was already written and committed by the application. --- src/helma/framework/ResponseTrans.java | 7 +++++++ src/helma/servlet/AbstractServletClient.java | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/src/helma/framework/ResponseTrans.java b/src/helma/framework/ResponseTrans.java index 0e03f0a8..54887222 100644 --- a/src/helma/framework/ResponseTrans.java +++ b/src/helma/framework/ResponseTrans.java @@ -462,6 +462,13 @@ public final class ResponseTrans implements Serializable { * web server. Transforms the string buffer into a char array to minimize size. */ public synchronized void close(String cset) throws UnsupportedEncodingException { + // if the response was already written and committed by the application + // there's no point in closing the response buffer + HttpServletResponse res = reqtrans.getServletResponse(); + if (res != null && res.isCommitted()) { + return; + } + // only use default charset if not explicitly set for this response. if (charset == null) { charset = cset; diff --git a/src/helma/servlet/AbstractServletClient.java b/src/helma/servlet/AbstractServletClient.java index 4c32377a..8f361ff3 100644 --- a/src/helma/servlet/AbstractServletClient.java +++ b/src/helma/servlet/AbstractServletClient.java @@ -253,6 +253,12 @@ public abstract class AbstractServletClient extends HttpServlet { ResponseTrans restrans = getApplication().execute(reqtrans); + // if the response was already written and committed by the application + // we can skip this part and return + if (response.isCommitted()) { + return; + } + // set cookies if (restrans.countCookies() > 0) { CookieTrans[] resCookies = restrans.getCookies();