vgritsenko 2002/06/04 18:36:11 Modified: src/java/org/apache/cocoon/reading Tag: cocoon_2_0_3_branch ResourceReader.java Log: Fix bug 9538: Do not ignore IOException, so partially written response does not get into the cache. Revision Changes Path No revision No revision 1.7.2.2 +25 -31 xml-cocoon2/src/java/org/apache/cocoon/reading/ResourceReader.java Index: ResourceReader.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/reading/ResourceReader.java,v retrieving revision 1.7.2.1 retrieving revision 1.7.2.2 diff -u -r1.7.2.1 -r1.7.2.2 --- ResourceReader.java 5 Jun 2002 01:14:46 -0000 1.7.2.1 +++ ResourceReader.java 5 Jun 2002 01:36:11 -0000 1.7.2.2 @@ -69,8 +69,6 @@ import java.util.Map; /** - * - * * The <code>ResourceReader</code> component is used to serve binary data * in a sitemap pipeline. It makes use of HTTP Headers to determine if * the requested resource should be written to the <code>OutputStream</code> @@ -86,7 +84,7 @@ * </dl> * * @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a> - * @version CVS $Id: ResourceReader.java,v 1.7.2.1 2002/06/05 01:14:46 vgritsenko Exp $ + * @version CVS $Id: ResourceReader.java,v 1.7.2.2 2002/06/05 01:36:11 vgritsenko Exp $ */ public class ResourceReader extends AbstractReader @@ -156,36 +154,32 @@ throws IOException, ProcessingException { final Response response = ObjectModelHelper.getResponse(this.objectModel); - try { - final long expires = parameters.getParameterAsInteger("expires", -1); + final long expires = parameters.getParameterAsInteger("expires", -1); + + if (expires > 0) { + response.setDateHeader("Expires", System.currentTimeMillis() + expires); + } + + long contentLength = this.inputSource.getContentLength(); + if (contentLength != -1) { + // FIXME (VG): Environment has setContentLength, and + // Response interface has not. Strange. + response.setHeader("Content-Length", Long.toString(contentLength)); + } + + // Bug #9539: This resource reader does not support ranges + response.setHeader("Accept-Ranges", "none"); + + byte[] buffer = new byte[8192]; + int length = -1; - if (expires > 0) { - response.setDateHeader("Expires", System.currentTimeMillis() + expires); - } - - long contentLength = this.inputSource.getContentLength(); - if (contentLength != -1) { - // FIXME (VG): Environment has setContentLength, and - // Response interface has not. Strange. - response.setHeader("Content-Length", Long.toString(contentLength)); - } - - // Bug #9539: This resource reader does not support ranges - response.setHeader("Accept-Ranges", "none"); - - byte[] buffer = new byte[8192]; - int length = -1; - - InputStream inputStream = this.inputSource.getInputStream(); - while ((length = inputStream.read(buffer)) > -1) { - out.write(buffer, 0, length); - } - inputStream.close(); - inputStream = null; - out.flush(); - } catch (IOException ioe) { - getLogger().debug("Received an IOException, assuming client severed connection on purpose"); + InputStream inputStream = this.inputSource.getInputStream(); + while ((length = inputStream.read(buffer)) > -1) { + out.write(buffer, 0, length); } + inputStream.close(); + inputStream = null; + out.flush(); } /**
---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]