remm 02/01/02 12:37:32
Modified: catalina/src/share/org/apache/catalina/servlets Tag:
tomcat_40_branch DefaultServlet.java
Log:
- Port fix for bugs 5617 and 5618.
- Fix incorrect content length (off by one byte) when a partial content
is returned.
Revision Changes Path
No revision
No revision
1.39.2.4 +15 -6
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java
Index: DefaultServlet.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java,v
retrieving revision 1.39.2.3
retrieving revision 1.39.2.4
diff -u -r1.39.2.3 -r1.39.2.4
--- DefaultServlet.java 20 Dec 2001 12:25:07 -0000 1.39.2.3
+++ DefaultServlet.java 2 Jan 2002 20:37:32 -0000 1.39.2.4
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java,v
1.39.2.3 2001/12/20 12:25:07 remm Exp $
- * $Revision: 1.39.2.3 $
- * $Date: 2001/12/20 12:25:07 $
+ * $Header:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java,v
1.39.2.4 2002/01/02 20:37:32 remm Exp $
+ * $Revision: 1.39.2.4 $
+ * $Date: 2002/01/02 20:37:32 $
*
* ====================================================================
*
@@ -122,7 +122,7 @@
*
* @author Craig R. McClanahan
* @author Remy Maucherat
- * @version $Revision: 1.39.2.3 $ $Date: 2001/12/20 12:25:07 $
+ * @version $Revision: 1.39.2.4 $ $Date: 2002/01/02 20:37:32 $
*/
public class DefaultServlet
@@ -1216,7 +1216,7 @@
+ range.start
+ "-" + range.end + "/"
+ range.length);
- response.setContentLength((int) (range.end - range.start));
+ response.setContentLength((int) (range.end - range.start + 1));
if (contentType != null) {
if (debug > 0)
@@ -1327,6 +1327,7 @@
// bytes is the only range unit supported (and I don't see the point
// of adding new ones).
if (!rangeHeader.startsWith("bytes")) {
+ response.addHeader("Content-Range", "bytes */" + fileLength);
response.sendError
(HttpServletResponse.SC_REQUESTED_RANGE_NOT_SATISFIABLE);
return null;
@@ -1349,6 +1350,7 @@
int dashPos = rangeDefinition.indexOf('-');
if (dashPos == -1) {
+ response.addHeader("Content-Range", "bytes */" + fileLength);
response.sendError
(HttpServletResponse.SC_REQUESTED_RANGE_NOT_SATISFIABLE);
return null;
@@ -1361,6 +1363,8 @@
currentRange.start = fileLength + offset;
currentRange.end = fileLength - 1;
} catch (NumberFormatException e) {
+ response.addHeader
+ ("Content-Range", "bytes */" + fileLength);
response.sendError
(HttpServletResponse
.SC_REQUESTED_RANGE_NOT_SATISFIABLE);
@@ -1379,6 +1383,8 @@
else
currentRange.end = fileLength - 1;
} catch (NumberFormatException e) {
+ response.addHeader
+ ("Content-Range", "bytes */" + fileLength);
response.sendError
(HttpServletResponse
.SC_REQUESTED_RANGE_NOT_SATISFIABLE);
@@ -1388,6 +1394,7 @@
}
if (!currentRange.validate()) {
+ response.addHeader("Content-Range", "bytes */" + fileLength);
response.sendError
(HttpServletResponse.SC_REQUESTED_RANGE_NOT_SATISFIABLE);
return null;
@@ -2089,8 +2096,10 @@
* Validate range.
*/
public boolean validate() {
+ if (end >= length)
+ end = length - 1;
return ( (start >= 0) && (end >= 0) && (length > 0)
- && (start <= end) && (end < length) );
+ && (start <= end) );
}
public void recycle() {
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>