You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2018/09/03 19:08:53 UTC
svn commit: r1839983 - in /tomcat/trunk:
java/org/apache/catalina/ssi/ResponseIncludeWrapper.java
java/org/apache/catalina/ssi/SSIFilter.java
java/org/apache/catalina/ssi/SSIServletExternalResolver.java
webapps/docs/changelog.xml
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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org