[Bug 68938] ScriptEngine engine is null
https://bz.apache.org/bugzilla/show_bug.cgi?id=68938 Mark Thomas changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |INVALID --- Comment #3 from Mark Thomas --- Bugzilla is not a support forum. This is not a Tomcat issue. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 68941] New: ServletFileUpload missing in tomcat-coyote.jar
https://bz.apache.org/bugzilla/show_bug.cgi?id=68941 Bug ID: 68941 Summary: ServletFileUpload missing in tomcat-coyote.jar Product: Tomcat 9 Version: 9.0.88 Hardware: Macintosh OS: other Status: NEW Severity: regression Priority: P2 Component: Packaging Assignee: dev@tomcat.apache.org Reporter: off...@alpl.lu Target Milestone: - Created attachment 39683 --> https://bz.apache.org/bugzilla/attachment.cgi?id=39683&action=edit package screenshot org.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload is missing in tomcat-coyote.jar -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 68941] ServletFileUpload missing in tomcat-coyote.jar
https://bz.apache.org/bugzilla/show_bug.cgi?id=68941 --- Comment #1 from Remy Maucherat --- This class is not used in Tomcat so it was removed: https://github.com/apache/tomcat/commit/9ba3b0c57fff311cd898716db19e508183545b28 -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 68941] ServletFileUpload missing in tomcat-coyote.jar
https://bz.apache.org/bugzilla/show_bug.cgi?id=68941 Mark Thomas changed: What|Removed |Added Resolution|--- |WONTFIX Status|NEW |RESOLVED -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r68745 - in /release/tomcat: tomcat-11/v11.0.0-M17/ tomcat-11/v11.0.0-M18/ tomcat-9/v9.0.85/ tomcat-9/v9.0.86/ tomcat-9/v9.0.87/
Author: remm Date: Wed Apr 24 11:34:52 2024 New Revision: 68745 Log: Drop old releases Removed: release/tomcat/tomcat-11/v11.0.0-M17/ release/tomcat/tomcat-11/v11.0.0-M18/ release/tomcat/tomcat-9/v9.0.85/ release/tomcat/tomcat-9/v9.0.86/ release/tomcat/tomcat-9/v9.0.87/ - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: [PR] Add support for timescales with time-taken access log token. [tomcat]
ChristopherSchultz commented on code in PR #721: URL: https://github.com/apache/tomcat/pull/721#discussion_r1578085100 ## java/org/apache/catalina/valves/AbstractAccessLogValve.java: ## @@ -1756,10 +1776,14 @@ protected AccessLogElement createAccessLogElement(String name, char pattern) { return new DateAndTimeElement(name); case 'T': // ms for milliseconds, us for microseconds, and s for seconds -if ("ms".equals(name)) { -return new ElapsedTimeElement(false, true); +if ("ns".equals(name)) { +return new ElapsedTimeElement(ElapsedTimeElement.Style.MILLISECONDS); } else if ("us".equals(name)) { -return new ElapsedTimeElement(true, false); +return new ElapsedTimeElement(ElapsedTimeElement.Style.MICROSECONDS); +} else if ("ms".equals(name)) { +return new ElapsedTimeElement(ElapsedTimeElement.Style.MILLISECONDS); +} else if ("fs".equals(name)) { +return new ElapsedTimeElement(ElapsedTimeElement.Style.SECONDS_FRACTIONAL); Review Comment: Done/ ## java/org/apache/catalina/valves/AbstractAccessLogValve.java: ## @@ -1756,10 +1776,14 @@ protected AccessLogElement createAccessLogElement(String name, char pattern) { return new DateAndTimeElement(name); case 'T': // ms for milliseconds, us for microseconds, and s for seconds -if ("ms".equals(name)) { -return new ElapsedTimeElement(false, true); +if ("ns".equals(name)) { +return new ElapsedTimeElement(ElapsedTimeElement.Style.MILLISECONDS); } else if ("us".equals(name)) { -return new ElapsedTimeElement(true, false); +return new ElapsedTimeElement(ElapsedTimeElement.Style.MICROSECONDS); +} else if ("ms".equals(name)) { +return new ElapsedTimeElement(ElapsedTimeElement.Style.MILLISECONDS); +} else if ("fs".equals(name)) { +return new ElapsedTimeElement(ElapsedTimeElement.Style.SECONDS_FRACTIONAL); Review Comment: Done. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
(tomcat) branch main updated: Fix typo
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 The following commit(s) were added to refs/heads/main by this push: new eee84fd4cb Fix typo eee84fd4cb is described below commit eee84fd4cb5b0f2b02c575297c9d07bd44328c45 Author: Mark Thomas AuthorDate: Wed Apr 24 17:06:36 2024 +0100 Fix typo --- test/org/apache/catalina/connector/TestRequest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/org/apache/catalina/connector/TestRequest.java b/test/org/apache/catalina/connector/TestRequest.java index b2289a8bb3..4bfff53596 100644 --- a/test/org/apache/catalina/connector/TestRequest.java +++ b/test/org/apache/catalina/connector/TestRequest.java @@ -868,7 +868,7 @@ public class TestRequest extends TomcatBaseTest { @Test -public void testGetReaderInvalidEbcoding() throws Exception { +public void testGetReaderInvalidEncoding() throws Exception { doTestGetReader("X-Invalid", false); } - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
(tomcat) branch 10.1.x updated: Fix typo
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 10.1.x in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/10.1.x by this push: new 0b67757413 Fix typo 0b67757413 is described below commit 0b677574135f17d41522a30f2d42ea204e33ebba Author: Mark Thomas AuthorDate: Wed Apr 24 17:06:36 2024 +0100 Fix typo --- test/org/apache/catalina/connector/TestRequest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/org/apache/catalina/connector/TestRequest.java b/test/org/apache/catalina/connector/TestRequest.java index 95ef70278b..6964427fc8 100644 --- a/test/org/apache/catalina/connector/TestRequest.java +++ b/test/org/apache/catalina/connector/TestRequest.java @@ -904,7 +904,7 @@ public class TestRequest extends TomcatBaseTest { @Test -public void testGetReaderInvalidEbcoding() throws Exception { +public void testGetReaderInvalidEncoding() throws Exception { doTestGetReader("X-Invalid", false); } - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
(tomcat) branch 9.0.x updated: Fix typo
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 9.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/9.0.x by this push: new 268684e26f Fix typo 268684e26f is described below commit 268684e26f87998c6e0499caa4f4d393ac5fe76e Author: Mark Thomas AuthorDate: Wed Apr 24 17:06:36 2024 +0100 Fix typo --- test/org/apache/catalina/connector/TestRequest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/org/apache/catalina/connector/TestRequest.java b/test/org/apache/catalina/connector/TestRequest.java index 09cc1068f6..3face2f3e8 100644 --- a/test/org/apache/catalina/connector/TestRequest.java +++ b/test/org/apache/catalina/connector/TestRequest.java @@ -904,7 +904,7 @@ public class TestRequest extends TomcatBaseTest { @Test -public void testGetReaderInvalidEbcoding() throws Exception { +public void testGetReaderInvalidEncoding() throws Exception { doTestGetReader("X-Invalid", false); } - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Refactoring heads up
Hi all, The Spring folks have pinged me on an issue reported to them. The short version is that Tomcat doesn't support non-blocking reads of chunked request bodies. While we have nearly all of the pieces we need to fix this, the commit is still going to be quite large involving quite a lot of changes to the ChunkedInputFilter. This will require some changes to Tomcat's internal API for ChunkedInputFilter - a number of protected fields and methods will be removed or made private. I have this working locally except for trailer fields. Closely related is the parsing of trailer fields. We already have a code comment saying this is very similar to HTTP fields (headers) but a common implementation isn't provided because fields use blocking or non-blocking IO but trailer fields only use blocking IO. Given we need to support non-blocking IO there is now a much stronger case for pulling the field (header) parsing code out to a separate class and reusing it for trailer fields. I'm starting to work on this now and hope to complete the work this week. Given these changes are going to impact pretty much every request I wanted to provide a heads up that these changes were on the way. My plan is to commit these changes to 11.0.x with the low risk parts (e.g. new methods) back-ported. Then, once we can see what is left, we can decide how quickly/slowly we want to back-port the complete fix to 10.1.x and 9.0.x (the issue was reported against 10.1.x). Mark - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
(tomcat) branch main updated: Refactor storage of trailer fields to use MimeHeaders
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 The following commit(s) were added to refs/heads/main by this push: new f087decbc9 Refactor storage of trailer fields to use MimeHeaders f087decbc9 is described below commit f087decbc938eff084b7be92298457736fe783c2 Author: Mark Thomas AuthorDate: Wed Apr 24 19:47:33 2024 +0100 Refactor storage of trailer fields to use MimeHeaders --- java/org/apache/catalina/connector/Request.java | 4 ++-- java/org/apache/coyote/Request.java | 15 +-- .../coyote/http11/filters/ChunkedInputFilter.java | 6 +++--- java/org/apache/coyote/http2/Stream.java | 2 +- java/org/apache/tomcat/util/buf/StringUtils.java | 5 + java/org/apache/tomcat/util/http/MimeHeaders.java | 19 +++ webapps/docs/changelog.xml| 8 7 files changed, 51 insertions(+), 8 deletions(-) diff --git a/java/org/apache/catalina/connector/Request.java b/java/org/apache/catalina/connector/Request.java index 390ca9daa1..6bf0f0a940 100644 --- a/java/org/apache/catalina/connector/Request.java +++ b/java/org/apache/catalina/connector/Request.java @@ -1763,8 +1763,8 @@ public class Request implements HttpServletRequest { if (!isTrailerFieldsReady()) { throw new IllegalStateException(sm.getString("coyoteRequest.trailersNotReady")); } -Map result = new HashMap<>(coyoteRequest.getTrailerFields()); -return result; +// No need for a defensive copy since a new Map is returned for every call. +return coyoteRequest.getTrailerFields(); } diff --git a/java/org/apache/coyote/Request.java b/java/org/apache/coyote/Request.java index 680aec6a7b..bf948b09a6 100644 --- a/java/org/apache/coyote/Request.java +++ b/java/org/apache/coyote/Request.java @@ -110,7 +110,7 @@ public final class Request { private final MessageBytes localAddrMB = MessageBytes.newInstance(); private final MimeHeaders headers = new MimeHeaders(); -private final Map trailerFields = new HashMap<>(); +private final MimeHeaders trailerFields = new MimeHeaders(); /** * Path parameters @@ -293,6 +293,11 @@ public final class Request { public Map getTrailerFields() { +return trailerFields.toMap(); +} + + +public MimeHeaders getMimeTrailerFields() { return trailerFields; } @@ -782,7 +787,13 @@ public final class Request { charsetHolder = CharsetHolder.EMPTY; expectation = false; headers.recycle(); -trailerFields.clear(); +trailerFields.recycle(); +/* + * Trailer fields are limited in size by bytes. The following call ensures that any request with a large number + * of small trailer fields doesn't result in a long lasting, large array of headers inside the MimeHeader + * instance. + */ +trailerFields.setLimit(MimeHeaders.DEFAULT_HEADER_SIZE); serverNameMB.recycle(); serverPort = -1; localAddrMB.recycle(); diff --git a/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java b/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java index c0b74a185f..83bccbd161 100644 --- a/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java +++ b/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java @@ -21,7 +21,6 @@ import java.io.IOException; import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; import java.util.Locale; -import java.util.Map; import java.util.Set; import org.apache.coyote.ActionCode; @@ -32,6 +31,7 @@ import org.apache.coyote.http11.Constants; import org.apache.coyote.http11.InputFilter; import org.apache.tomcat.util.buf.ByteChunk; import org.apache.tomcat.util.buf.HexUtils; +import org.apache.tomcat.util.http.MimeHeaders; import org.apache.tomcat.util.http.parser.HttpParser; import org.apache.tomcat.util.net.ApplicationBufferHandler; import org.apache.tomcat.util.res.StringManager; @@ -467,7 +467,7 @@ public class ChunkedInputFilter implements InputFilter, ApplicationBufferHandler * implementation wasn't viewed as practical. */ -Map headers = request.getTrailerFields(); +MimeHeaders headers = request.getMimeTrailerFields(); byte chr = 0; @@ -629,7 +629,7 @@ public class ChunkedInputFilter implements InputFilter, ApplicationBufferHandler String value = new String(trailingHeaders.getBytes(), colonPos, lastSignificantChar - colonPos, StandardCharsets.ISO_8859_1); -headers.put(headerName, value); +headers.addValue(headerName).setString(value); } return true; diff --git a/java/org/apache/coyote/http2/Stream.java b/java/org/apache/coyote/http2/Stream.java index d8
(tomcat) branch 9.0.x updated: Refactor storage of trailer fields to use MimeHeaders
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 9.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/9.0.x by this push: new 6c72f6ee5c Refactor storage of trailer fields to use MimeHeaders 6c72f6ee5c is described below commit 6c72f6ee5cceee0fc52fe5909d23321e62e02181 Author: Mark Thomas AuthorDate: Wed Apr 24 19:47:33 2024 +0100 Refactor storage of trailer fields to use MimeHeaders --- java/org/apache/catalina/connector/Request.java | 4 ++-- java/org/apache/coyote/Request.java | 15 +-- .../coyote/http11/filters/ChunkedInputFilter.java | 6 +++--- java/org/apache/coyote/http2/Stream.java | 2 +- java/org/apache/tomcat/util/buf/StringUtils.java | 5 + java/org/apache/tomcat/util/http/MimeHeaders.java | 19 +++ webapps/docs/changelog.xml| 8 7 files changed, 51 insertions(+), 8 deletions(-) diff --git a/java/org/apache/catalina/connector/Request.java b/java/org/apache/catalina/connector/Request.java index c28a9bf216..19fb94f889 100644 --- a/java/org/apache/catalina/connector/Request.java +++ b/java/org/apache/catalina/connector/Request.java @@ -1870,8 +1870,8 @@ public class Request implements HttpServletRequest { if (!isTrailerFieldsReady()) { throw new IllegalStateException(sm.getString("coyoteRequest.trailersNotReady")); } -Map result = new HashMap<>(coyoteRequest.getTrailerFields()); -return result; +// No need for a defensive copy since a new Map is returned for every call. +return coyoteRequest.getTrailerFields(); } diff --git a/java/org/apache/coyote/Request.java b/java/org/apache/coyote/Request.java index e6f1ea8ce2..72eb5171ff 100644 --- a/java/org/apache/coyote/Request.java +++ b/java/org/apache/coyote/Request.java @@ -94,7 +94,7 @@ public final class Request { private final MessageBytes localAddrMB = MessageBytes.newInstance(); private final MimeHeaders headers = new MimeHeaders(); -private final Map trailerFields = new HashMap<>(); +private final MimeHeaders trailerFields = new MimeHeaders(); /** * Path parameters @@ -280,6 +280,11 @@ public final class Request { public Map getTrailerFields() { +return trailerFields.toMap(); +} + + +public MimeHeaders getMimeTrailerFields() { return trailerFields; } @@ -721,7 +726,13 @@ public final class Request { characterEncoding = null; expectation = false; headers.recycle(); -trailerFields.clear(); +trailerFields.recycle(); +/* + * Trailer fields are limited in size by bytes. The following call ensures that any request with a large number + * of small trailer fields doesn't result in a long lasting, large array of headers inside the MimeHeader + * instance. + */ +trailerFields.setLimit(MimeHeaders.DEFAULT_HEADER_SIZE); serverNameMB.recycle(); serverPort = -1; localAddrMB.recycle(); diff --git a/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java b/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java index c0b74a185f..83bccbd161 100644 --- a/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java +++ b/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java @@ -21,7 +21,6 @@ import java.io.IOException; import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; import java.util.Locale; -import java.util.Map; import java.util.Set; import org.apache.coyote.ActionCode; @@ -32,6 +31,7 @@ import org.apache.coyote.http11.Constants; import org.apache.coyote.http11.InputFilter; import org.apache.tomcat.util.buf.ByteChunk; import org.apache.tomcat.util.buf.HexUtils; +import org.apache.tomcat.util.http.MimeHeaders; import org.apache.tomcat.util.http.parser.HttpParser; import org.apache.tomcat.util.net.ApplicationBufferHandler; import org.apache.tomcat.util.res.StringManager; @@ -467,7 +467,7 @@ public class ChunkedInputFilter implements InputFilter, ApplicationBufferHandler * implementation wasn't viewed as practical. */ -Map headers = request.getTrailerFields(); +MimeHeaders headers = request.getMimeTrailerFields(); byte chr = 0; @@ -629,7 +629,7 @@ public class ChunkedInputFilter implements InputFilter, ApplicationBufferHandler String value = new String(trailingHeaders.getBytes(), colonPos, lastSignificantChar - colonPos, StandardCharsets.ISO_8859_1); -headers.put(headerName, value); +headers.addValue(headerName).setString(value); } return true; diff --git a/java/org/apache/coyote/http2/Stream.java b/java/org/apache/coyote/http2/Stream.java index c363082159..6
(tomcat) branch 10.1.x updated: Refactor storage of trailer fields to use MimeHeaders
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 10.1.x in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/10.1.x by this push: new 7883d8d913 Refactor storage of trailer fields to use MimeHeaders 7883d8d913 is described below commit 7883d8d913ce3ab859e5f7448df76bc40e7c84e9 Author: Mark Thomas AuthorDate: Wed Apr 24 19:47:33 2024 +0100 Refactor storage of trailer fields to use MimeHeaders --- java/org/apache/catalina/connector/Request.java | 4 ++-- java/org/apache/coyote/Request.java | 15 +-- .../coyote/http11/filters/ChunkedInputFilter.java | 6 +++--- java/org/apache/coyote/http2/Stream.java | 2 +- java/org/apache/tomcat/util/buf/StringUtils.java | 5 + java/org/apache/tomcat/util/http/MimeHeaders.java | 19 +++ webapps/docs/changelog.xml| 8 7 files changed, 51 insertions(+), 8 deletions(-) diff --git a/java/org/apache/catalina/connector/Request.java b/java/org/apache/catalina/connector/Request.java index 234275e158..c043e31b32 100644 --- a/java/org/apache/catalina/connector/Request.java +++ b/java/org/apache/catalina/connector/Request.java @@ -1839,8 +1839,8 @@ public class Request implements HttpServletRequest { if (!isTrailerFieldsReady()) { throw new IllegalStateException(sm.getString("coyoteRequest.trailersNotReady")); } -Map result = new HashMap<>(coyoteRequest.getTrailerFields()); -return result; +// No need for a defensive copy since a new Map is returned for every call. +return coyoteRequest.getTrailerFields(); } diff --git a/java/org/apache/coyote/Request.java b/java/org/apache/coyote/Request.java index 5059b875b4..f455585d52 100644 --- a/java/org/apache/coyote/Request.java +++ b/java/org/apache/coyote/Request.java @@ -110,7 +110,7 @@ public final class Request { private final MessageBytes localAddrMB = MessageBytes.newInstance(); private final MimeHeaders headers = new MimeHeaders(); -private final Map trailerFields = new HashMap<>(); +private final MimeHeaders trailerFields = new MimeHeaders(); /** * Path parameters @@ -296,6 +296,11 @@ public final class Request { public Map getTrailerFields() { +return trailerFields.toMap(); +} + + +public MimeHeaders getMimeTrailerFields() { return trailerFields; } @@ -769,7 +774,13 @@ public final class Request { characterEncoding = null; expectation = false; headers.recycle(); -trailerFields.clear(); +trailerFields.recycle(); +/* + * Trailer fields are limited in size by bytes. The following call ensures that any request with a large number + * of small trailer fields doesn't result in a long lasting, large array of headers inside the MimeHeader + * instance. + */ +trailerFields.setLimit(MimeHeaders.DEFAULT_HEADER_SIZE); serverNameMB.recycle(); serverPort = -1; localAddrMB.recycle(); diff --git a/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java b/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java index c0b74a185f..83bccbd161 100644 --- a/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java +++ b/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java @@ -21,7 +21,6 @@ import java.io.IOException; import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; import java.util.Locale; -import java.util.Map; import java.util.Set; import org.apache.coyote.ActionCode; @@ -32,6 +31,7 @@ import org.apache.coyote.http11.Constants; import org.apache.coyote.http11.InputFilter; import org.apache.tomcat.util.buf.ByteChunk; import org.apache.tomcat.util.buf.HexUtils; +import org.apache.tomcat.util.http.MimeHeaders; import org.apache.tomcat.util.http.parser.HttpParser; import org.apache.tomcat.util.net.ApplicationBufferHandler; import org.apache.tomcat.util.res.StringManager; @@ -467,7 +467,7 @@ public class ChunkedInputFilter implements InputFilter, ApplicationBufferHandler * implementation wasn't viewed as practical. */ -Map headers = request.getTrailerFields(); +MimeHeaders headers = request.getMimeTrailerFields(); byte chr = 0; @@ -629,7 +629,7 @@ public class ChunkedInputFilter implements InputFilter, ApplicationBufferHandler String value = new String(trailingHeaders.getBytes(), colonPos, lastSignificantChar - colonPos, StandardCharsets.ISO_8859_1); -headers.put(headerName, value); +headers.addValue(headerName).setString(value); } return true; diff --git a/java/org/apache/coyote/http2/Stream.java b/java/org/apache/coyote/http2/Stream.java index 400e9a6bb