Bug 62687

Summary: WarURLConnection always returns -1 from getContentLength() and getContentLengthLong() which causes a 416 when request includes a Range header
Product: Tomcat 8 Reporter: Douglas Paul <3wvzs2636b>
Component: CatalinaAssignee: Tomcat Developers Mailing List <dev>
Status: RESOLVED FIXED    
Severity: normal CC: pwebb
Priority: P2    
Version: 8.5.x-trunk   
Target Milestone: ----   
Hardware: All   
OS: All   

Description Douglas Paul 2018-09-07 01:45:37 UTC
WarURLConnection doesn't override the default implementations of getContentLength() and getContentLengthLong(), so it always returns -1.

In the context of a Spring Boot application, this has the effect of causing requests that have a Range header to return a 416 Range Not Satisfiable.

I originally reported this bug against Spring Boot (https://github.com/spring-projects/spring-boot/issues/14306) but the developers there suggested I report it here.

Specifically, Andy Wilkinson suggested that WarUrlConnection should override getContentLength() and getContentLengthLong() to delegate them to wrappedJarUrlConnection as is done for getLastModified(). (See bug 61125.)
Comment 1 Remy Maucherat 2018-09-11 09:24:17 UTC
Ok, this is reasonable. The fix will be in 9.0.13 and 8.5.35.
Comment 2 Douglas Paul 2018-09-12 00:34:55 UTC
Excellent, thanks!