On 07/01/2026 19:45, Nelson Page via users wrote:
Hi all -
First time mailing on this list, please let me know what I can improve.
I've run into a case where
org.apache.catalina.connector.Request.getParameter("some_parameter")
no longer results in the parameters getting parsed.
We're on tomcat 9.0.107, using HTTP/2, the `content-length` header is
not being set, the `content-type` header is set to
`application/x-www-form-urlencoded`, and the HTTP method is `POST`.
So I think what happens is in
https://github.com/apache/tomcat/blob/9.0.x/java/org/apache/catalina/connector/Request.java#L3094
the `len` variable is set to -1, and we fall out in the `if` statement
below it.
Is this expected behavior?
No.
I'd need to write a test case to confirm the behaviour but that looks
like a bug.
HTTP/2 requests are not required to provide a content-length since the
HTTP/2 framing defines where the body (if any) ends.
The fix is probably changing "...else if chunked..." to "...else if
chunked or HTTP/2..."
We should be able to fix this for the January releases (they are a
little behind the usual schedule as we need to get some Tomcat Native
releases completed first).
If you (or anyone else) wanted to help this along any of the following
would help. Ideally, we'd have all of these in this order but any help
with any of them would be useful.
1. A bug for this in Bugzilla (Tomcat version isn't that important).
2. A test case attached to the BZ issue in the form of a patch to the
Tomcat unit tests that demonstrates the issue. There should be examples
of all the parts required in the existing tests cases. This should
mostly be copy/paste. A GitHub PR also works.
3. A patch (or pull request) that fixes the issue and causes the test
case in 2 to pass.
Cheers,
Mark
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]