Revision: 2474 http://archive-access.svn.sourceforge.net/archive-access/?rev=2474&view=rev Author: bradtofel Date: 2008-07-22 01:46:25 +0000 (Tue, 22 Jul 2008) Log Message: ----------- REFACTOR/INTERFACE: ReplayRenderer no longer ISA HttpHeaderProcessor, now one is passed as a constructor, allowing this to be used for Proxy and binary ArchivalUrl/DomainPrefix. Modified Paths: -------------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/replay/TransparentReplayRenderer.java Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/replay/TransparentReplayRenderer.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/replay/TransparentReplayRenderer.java 2008-07-22 01:45:01 UTC (rev 2473) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/replay/TransparentReplayRenderer.java 2008-07-22 01:46:25 UTC (rev 2474) @@ -48,10 +48,12 @@ * @author brad * @version $Date$, $Revision$ */ -public class TransparentReplayRenderer implements ReplayRenderer, HttpHeaderProcessor { - +public class TransparentReplayRenderer implements ReplayRenderer { + private HttpHeaderProcessor httpHeaderProcessor; private final static int BUFFER_SIZE = 4096; - + public TransparentReplayRenderer(HttpHeaderProcessor httpHeaderProcessor) { + this.httpHeaderProcessor = httpHeaderProcessor; + } /* (non-Javadoc) * @see org.archive.wayback.ReplayRenderer#renderResource(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, org.archive.wayback.core.WaybackRequest, org.archive.wayback.core.SearchResult, org.archive.wayback.core.Resource, org.archive.wayback.ResultURIConverter, org.archive.wayback.core.SearchResults) */ @@ -64,7 +66,7 @@ HttpHeaderOperation.copyHTTPMessageHeader(resource, httpResponse); Map<String,String> headers = HttpHeaderOperation.processHeaders( - resource, result, uriConverter, this); + resource, result, uriConverter, httpHeaderProcessor); HttpHeaderOperation.sendHeaders(headers, httpResponse); @@ -75,14 +77,4 @@ os.write(buffer, 0, r); } } - - /* (non-Javadoc) - * @see org.archive.wayback.replay.HeaderFilter#filter(java.util.Map, java.lang.String, java.lang.String, org.archive.wayback.ResultURIConverter, org.archive.wayback.core.SearchResult) - */ - public void filter(Map<String, String> output, String key, String value, - ResultURIConverter uriConverter, CaptureSearchResult result) { - - // copy all HTTP headers, as-is. - output.put(key, value); - } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
Revision: 2825 http://archive-access.svn.sourceforge.net/archive-access/?rev=2825&view=rev Author: bradtofel Date: 2009-10-23 00:40:41 +0000 (Fri, 23 Oct 2009) Log Message: ----------- Now explicitly adds the content-length header from the original HTTP headers, in case the configured HttpHeaderProcessor did not include it. Modified Paths: -------------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/replay/TransparentReplayRenderer.java Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/replay/TransparentReplayRenderer.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/replay/TransparentReplayRenderer.java 2009-10-23 00:39:07 UTC (rev 2824) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/replay/TransparentReplayRenderer.java 2009-10-23 00:40:41 UTC (rev 2825) @@ -67,6 +67,14 @@ Map<String,String> headers = HttpHeaderOperation.processHeaders( resource, result, uriConverter, httpHeaderProcessor); + + // HACKHACK: getContentLength() may not find the original content length + // if a HttpHeaderProcessor has mangled it too badly. Should this + // happen in the HttpHeaderProcessor itself? + String origLength = HttpHeaderOperation.getContentLength(headers); + if(origLength != null) { + headers.put(HttpHeaderOperation.HTTP_LENGTH_HEADER, origLength); + } HttpHeaderOperation.sendHeaders(headers, httpResponse); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
Revision: 3561 http://archive-access.svn.sourceforge.net/archive-access/?rev=3561&view=rev Author: bradtofel Date: 2011-11-16 23:17:12 +0000 (Wed, 16 Nov 2011) Log Message: ----------- BUGFIX: if there were no headers, and no content, prevent Tomcat from making something up (transparently) by setting the Content-Length to 0 Modified Paths: -------------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/replay/TransparentReplayRenderer.java Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/replay/TransparentReplayRenderer.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/replay/TransparentReplayRenderer.java 2011-11-16 22:19:49 UTC (rev 3560) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/replay/TransparentReplayRenderer.java 2011-11-16 23:17:12 UTC (rev 3561) @@ -76,8 +76,16 @@ // and copy the raw byte-stream. OutputStream os = httpResponse.getOutputStream(); byte[] buffer = new byte[BUFFER_SIZE]; + long total = 0; for (int r = -1; (r = resource.read(buffer, 0, BUFFER_SIZE)) != -1;) { os.write(buffer, 0, r); + total += r; } + if(total == 0) { + if(headers.size() == 0) { + // totally empty response + httpResponse.setContentLength(0); + } + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |