Author: markt Date: Mon Sep 3 19:08:53 2018 New Revision: 1839983 URL: http://svn.apache.org/viewvc?rev=1839983&view=rev Log: Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=62669
When using the SSIFilter and a resource does not specify a content type, do not force the content type to application/x-octet-stream Modified: tomcat/trunk/java/org/apache/catalina/ssi/ResponseIncludeWrapper.java tomcat/trunk/java/org/apache/catalina/ssi/SSIFilter.java tomcat/trunk/java/org/apache/catalina/ssi/SSIServletExternalResolver.java tomcat/trunk/webapps/docs/changelog.xml Modified: tomcat/trunk/java/org/apache/catalina/ssi/ResponseIncludeWrapper.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ssi/ResponseIncludeWrapper.java?rev=1839983&r1=1839982&r2=1839983&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/ssi/ResponseIncludeWrapper.java (original) +++ tomcat/trunk/java/org/apache/catalina/ssi/ResponseIncludeWrapper.java Mon Sep 3 19:08:53 2018 @@ -22,9 +22,7 @@ import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.util.Locale; -import javax.servlet.ServletContext; import javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponseWrapper; @@ -41,11 +39,9 @@ public class ResponseIncludeWrapper exte /** * The names of some headers we want to capture. */ - private static final String CONTENT_TYPE = "content-type"; private static final String LAST_MODIFIED = "last-modified"; protected long lastModified = -1; - private String contentType = null; /** * Our ServletOutputStream @@ -54,24 +50,16 @@ public class ResponseIncludeWrapper exte protected ServletOutputStream servletOutputStream; protected PrintWriter printWriter; - private final ServletContext context; - private final HttpServletRequest request; - /** * Initialize our wrapper with the current HttpServletResponse and * ServletOutputStream. * - * @param context The servlet context - * @param request The HttpServletResponse to use * @param response The response to use * @param captureServletOutputStream The ServletOutputStream to use */ - public ResponseIncludeWrapper(ServletContext context, - HttpServletRequest request, HttpServletResponse response, + public ResponseIncludeWrapper(HttpServletResponse response, ServletOutputStream captureServletOutputStream) { super(response); - this.context = context; - this.request = request; this.captureServletOutputStream = captureServletOutputStream; } @@ -152,41 +140,6 @@ public class ResponseIncludeWrapper exte return lastModified; } - /** - * Returns the value of the <code>content-type</code> header field. - * - * @return the content type of the resource referenced by this - * <code>ResponseIncludeWrapper</code>, or <code>null</code> if not known. - */ - @Override - public String getContentType() { - if (contentType == null) { - String url = request.getRequestURI(); - String mime = context.getMimeType(url); - if (mime != null) { - setContentType(mime); - } else { - // return a safe value - setContentType("application/x-octet-stream"); - } - } - return contentType; - } - - /** - * Sets the value of the <code>content-type</code> header field. - * - * @param mime a mime type - */ - @Override - public void setContentType(String mime) { - contentType = mime; - if (contentType != null) { - getResponse().setContentType(contentType); - } - } - - @Override public void addDateHeader(String name, long value) { super.addDateHeader(name, value); @@ -205,8 +158,6 @@ public class ResponseIncludeWrapper exte if (lastModified != -1) { this.lastModified = lastModified; } - } else if (lname.equals(CONTENT_TYPE)) { - contentType = value; } } @@ -228,8 +179,6 @@ public class ResponseIncludeWrapper exte if (lastModified != -1) { this.lastModified = lastModified; } - } else if (lname.equals(CONTENT_TYPE)) { - contentType = value; } } } Modified: tomcat/trunk/java/org/apache/catalina/ssi/SSIFilter.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ssi/SSIFilter.java?rev=1839983&r1=1839982&r2=1839983&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/ssi/SSIFilter.java (original) +++ tomcat/trunk/java/org/apache/catalina/ssi/SSIFilter.java Mon Sep 3 19:08:53 2018 @@ -92,8 +92,7 @@ public class SSIFilter extends GenericFi // setup to capture output ByteArrayServletOutputStream basos = new ByteArrayServletOutputStream(); - ResponseIncludeWrapper responseIncludeWrapper = - new ResponseIncludeWrapper(getServletContext(),req, res, basos); + ResponseIncludeWrapper responseIncludeWrapper = new ResponseIncludeWrapper(res, basos); // process remainder of filter chain chain.doFilter(req, responseIncludeWrapper); @@ -106,7 +105,7 @@ public class SSIFilter extends GenericFi String contentType = responseIncludeWrapper.getContentType(); // is this an allowed type for SSI processing? - if (contentTypeRegEx.matcher(contentType).matches()) { + if (contentType != null && contentTypeRegEx.matcher(contentType).matches()) { String encoding = res.getCharacterEncoding(); // set up SSI processing Modified: tomcat/trunk/java/org/apache/catalina/ssi/SSIServletExternalResolver.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ssi/SSIServletExternalResolver.java?rev=1839983&r1=1839982&r2=1839983&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/ssi/SSIServletExternalResolver.java (original) +++ tomcat/trunk/java/org/apache/catalina/ssi/SSIServletExternalResolver.java Mon Sep 3 19:08:53 2018 @@ -522,10 +522,8 @@ public class SSIServletExternalResolver throw new IOException( "Couldn't get request dispatcher for path: " + path); } - ByteArrayServletOutputStream basos = - new ByteArrayServletOutputStream(); - ResponseIncludeWrapper responseIncludeWrapper = - new ResponseIncludeWrapper(context, req, res, basos); + ByteArrayServletOutputStream basos = new ByteArrayServletOutputStream(); + ResponseIncludeWrapper responseIncludeWrapper = new ResponseIncludeWrapper(res, basos); rd.include(req, responseIncludeWrapper); //We can't assume the included servlet flushed its output responseIncludeWrapper.flushOutputStreamOrWriter(); Modified: tomcat/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1839983&r1=1839982&r2=1839983&view=diff ============================================================================== --- tomcat/trunk/webapps/docs/changelog.xml (original) +++ tomcat/trunk/webapps/docs/changelog.xml Mon Sep 3 19:08:53 2018 @@ -58,6 +58,11 @@ (markt) </fix> <fix> + <bug>62669</bug>: When using the SSIFilter and a resource does not + specify a content type, do not force the content type to + <code>application/x-octet-stream</code>. (markt) + </fix> + <fix> <bug>62670</bug>: Adjust the memory leak protection for the <code>DriverManager</code> so that JDBC drivers located in <code>$CATALINA_HOME/lib</code> and <code>$CATALINA_BASE/lib</code> are --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org