This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/tomcat.git
commit 3cdfd45e5049a23a0414ab53e5f7f952243e5018 Author: Mark Thomas <ma...@apache.org> AuthorDate: Wed Jan 18 18:10:00 2023 +0000 Refactor to retain original behaviour Setting an invalid encoding should still set the encoding name --- java/org/apache/coyote/Response.java | 6 ++++-- java/org/apache/tomcat/util/buf/CharsetHolder.java | 23 ++++++++++++---------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/java/org/apache/coyote/Response.java b/java/org/apache/coyote/Response.java index f5fb215c22..1c9008765b 100644 --- a/java/org/apache/coyote/Response.java +++ b/java/org/apache/coyote/Response.java @@ -502,7 +502,8 @@ public final class Response { return; } - charsetHolder = CharsetHolder.getValidatedInstance(characterEncoding); + charsetHolder = CharsetHolder.getInstance(characterEncoding); + charsetHolder.validate(); } @@ -562,8 +563,9 @@ public final class Response { this.contentType = m.toStringNoCharset(); charsetValue = charsetValue.trim(); if (charsetValue.length() > 0) { + charsetHolder = CharsetHolder.getInstance(charsetValue); try { - charsetHolder = CharsetHolder.getValidatedInstance(charsetValue); + charsetHolder.validate(); } catch (UnsupportedEncodingException e) { log.warn(sm.getString("response.encoding.invalid", charsetValue), e); } diff --git a/java/org/apache/tomcat/util/buf/CharsetHolder.java b/java/org/apache/tomcat/util/buf/CharsetHolder.java index da0f912565..953925ce13 100755 --- a/java/org/apache/tomcat/util/buf/CharsetHolder.java +++ b/java/org/apache/tomcat/util/buf/CharsetHolder.java @@ -51,15 +51,6 @@ public class CharsetHolder { } - public static CharsetHolder getValidatedInstance(String name) throws UnsupportedEncodingException { - if (name == null) { - return EMPTY; - } - - return new CharsetHolder(name, B2CConverter.getCharset(name)); - } - - public static CharsetHolder getInstance(Charset encoding) { if (encoding == null) { return EMPTY; @@ -105,9 +96,21 @@ public class CharsetHolder { * name of a Charset that the JRE does not recognise */ public Charset getValidatedCharset() throws UnsupportedEncodingException { + validate(); + return charset; + } + + + /** + * Throws an exception if the instance holds a name that without a matching + * Charset. + * + * @throws UnsupportedEncodingException if the holder contains a name + * without a matching Charset + */ + public void validate() throws UnsupportedEncodingException { if (name != null && charset == null) { throw new UnsupportedEncodingException(name); } - return charset; } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org