This is an automated email from the ASF dual-hosted git repository. remm 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 382872c6d3 Fix content-range header length 382872c6d3 is described below commit 382872c6d317128f1f4f64eb34ef2b0c27ff6b4a Author: remm <r...@apache.org> AuthorDate: Mon Nov 18 14:22:19 2024 +0100 Fix content-range header length Submitted by Justin Chen. --- java/org/apache/catalina/servlets/DefaultServlet.java | 2 +- .../catalina/servlets/TestDefaultServletRangeRequests.java | 13 +++++++++++-- webapps/docs/changelog.xml | 4 ++++ 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/java/org/apache/catalina/servlets/DefaultServlet.java b/java/org/apache/catalina/servlets/DefaultServlet.java index 387049f749..d288725b0d 100644 --- a/java/org/apache/catalina/servlets/DefaultServlet.java +++ b/java/org/apache/catalina/servlets/DefaultServlet.java @@ -2356,7 +2356,7 @@ public class DefaultServlet extends HttpServlet { } long start = getStart(range, length); long end = getEnd(range, length); - ostream.println("Content-Range: bytes " + start + "-" + end + "/" + (end - start)); + ostream.println("Content-Range: bytes " + start + "-" + end + "/" + length); ostream.println(); // Printing content diff --git a/test/org/apache/catalina/servlets/TestDefaultServletRangeRequests.java b/test/org/apache/catalina/servlets/TestDefaultServletRangeRequests.java index cd695019c0..1ebf851b01 100644 --- a/test/org/apache/catalina/servlets/TestDefaultServletRangeRequests.java +++ b/test/org/apache/catalina/servlets/TestDefaultServletRangeRequests.java @@ -75,6 +75,8 @@ public class TestDefaultServletRangeRequests extends TomcatBaseTest { // Valid range parameterSets.add(new Object[] { "bytes=0-9", null, Integer.valueOf(206), "10", "0-9/" + len }); + parameterSets.add(new Object[] { + "bytes=0-9,10-10", null, Integer.valueOf(206), null, "0-9/" + len }); parameterSets.add(new Object[] { "bytes=-100", null, Integer.valueOf(206), "100", (len - 100) + "-" + (len - 1) + "/" + len }); parameterSets.add(new Object[] { @@ -140,7 +142,7 @@ public class TestDefaultServletRangeRequests extends TomcatBaseTest { // Check the result Assert.assertEquals(responseCodeExpected, rc); - if (contentLengthExpected.length() > 0) { + if (contentLengthExpected != null && contentLengthExpected.length() > 0) { String contentLength = responseHeaders.get("Content-Length").get(0); Assert.assertEquals(contentLengthExpected, contentLength); } @@ -151,7 +153,14 @@ public class TestDefaultServletRangeRequests extends TomcatBaseTest { if (headerValues != null && headerValues.size() == 1) { responseRange = headerValues.get(0); } - Assert.assertEquals("bytes " + responseRangeExpected, responseRange); + if (responseRange != null) { + Assert.assertEquals("bytes " + responseRangeExpected, responseRange); + } else { + Assert.assertTrue( + "Expected `Content-Range: " + "bytes " + responseRangeExpected + + "` in multipart/byteranges response body not found!", + responseBody.toString().contains("bytes " + responseRangeExpected)); + } } } diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 3a1d54347b..f9985f5a03 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -140,6 +140,10 @@ The previous fix for incosistent resource metadata during concurrent reads and writes was incomplete. (markt) </fix> + <fix> + <pr>780</pr>: Fix <code>content-range</code> header length. Submitted + by Justin Chen. (remm) + </fix> </changelog> </subsection> <subsection name="Coyote"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org