Author: markt
Date: Sun Jul 30 18:18:36 2017
New Revision: 1803444
URL: http://svn.apache.org/viewvc?rev=1803444&view=rev
Log:
Fix another BZ 49464 regression.
Modified:
tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java
tomcat/trunk/test/org/apache/catalina/servlets/TestDefaultServlet.java
tomcat/trunk/webapps/docs/changelog.xml
Modified: tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java?rev=1803444&r1=1803443&r2=1803444&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java Sun Jul
30 18:18:36 2017
@@ -974,7 +974,18 @@ public class DefaultServlet extends Http
String outputEncoding = response.getCharacterEncoding();
Charset charset = B2CConverter.getCharset(outputEncoding);
boolean conversionRequired;
+ /*
+ * The test below deliberately uses != to compare two Strings. This is
+ * because the code is looking to see if the default character encoding
+ * has been returned because no explicit character encoding has been
+ * defined. There is no clean way of doing this via the Servlet API. It
+ * would be possible to add a Tomcat specific API but that would
require
+ * quite a bit of code to get to the Tomcat specific request object
that
+ * may have been wrapped. The != test is a (slightly hacky) quick way
of
+ * doing this.
+ */
if (!usingPrecompressedVersion && isText(contentType) &&
+ outputEncoding !=
org.apache.coyote.Constants.DEFAULT_BODY_CHARSET.name() &&
!charset.equals(fileEncodingCharset)) {
conversionRequired = true;
// Conversion often results fewer/more/different bytes.
Modified: tomcat/trunk/test/org/apache/catalina/servlets/TestDefaultServlet.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/servlets/TestDefaultServlet.java?rev=1803444&r1=1803443&r2=1803444&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/servlets/TestDefaultServlet.java
(original)
+++ tomcat/trunk/test/org/apache/catalina/servlets/TestDefaultServlet.java Sun
Jul 30 18:18:36 2017
@@ -787,19 +787,12 @@ public class TestDefaultServlet extends
int rc = getUrl("http://localhost:" + getPort() +
"/bug49nnn/bug49464-ibm850.txt",
res, headers);
+ // This test relies on no content-type being specified in the response
+ // and the user agent correctly figuring out the content type
Assert.assertEquals(HttpServletResponse.SC_OK, rc);
List<String> values = headers.get("Content-Type");
- if (values != null && values.size() == 1) {
- MediaType mediaType = MediaType.parseMediaType(new
StringReader(values.get(0)));
- String charset = mediaType.getCharset();
- if (charset == null) {
- res.setCharset(StandardCharsets.ISO_8859_1);
- } else {
- res.setCharset(B2CConverter.getCharset(charset));
- }
- } else {
- res.setCharset(StandardCharsets.ISO_8859_1);
- }
+ Assert.assertNull(values);
+ res.setCharset(B2CConverter.getCharset("IBM850"));
Assert.assertEquals("\u00bd", res.toString());
}
Modified: tomcat/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1803444&r1=1803443&r2=1803444&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Sun Jul 30 18:18:36 2017
@@ -48,6 +48,12 @@
<subsection name="Catalina">
<changelog>
<fix>
+ Correct another regression in the fix for <bug>49464</bug> that could
+ corrupt static content when no character encoding was explicitly
defined
+ for the response and the <code>DefaultServlet</code> used a
+ <code>fileEncoding</code> that was not ISO-8859-1.(markt)
+ </fix>
+ <fix>
Correct a bug in the <code>PushBuilder</code> implementation that
meant push URLs containing <code>%nn</code> sequences were not
correctly
decoded. Identified by FindBugs. (markt)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]