You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2002/01/01 22:30:48 UTC

cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets DefaultServlet.java

remm        02/01/01 13:30:48

  Modified:    catalina/src/share/org/apache/catalina/servlets
                        DefaultServlet.java
  Log:
  - Fix bugs 5617 and 5618.
  - Fix incorrect content length (off by one byte) when a partial content
    is returned.
  
  Revision  Changes    Path
  1.48      +16 -7     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.47
  retrieving revision 1.48
  diff -u -r1.47 -r1.48
  --- DefaultServlet.java	21 Dec 2001 21:15:45 -0000	1.47
  +++ DefaultServlet.java	1 Jan 2002 21:30:48 -0000	1.48
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java,v 1.47 2001/12/21 21:15:45 craigmcc Exp $
  - * $Revision: 1.47 $
  - * $Date: 2001/12/21 21:15:45 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java,v 1.48 2002/01/01 21:30:48 remm Exp $
  + * $Revision: 1.48 $
  + * $Date: 2002/01/01 21:30:48 $
    *
    * ====================================================================
    *
  @@ -125,7 +125,7 @@
    *
    * @author Craig R. McClanahan
    * @author Remy Maucherat
  - * @version $Revision: 1.47 $ $Date: 2001/12/21 21:15:45 $
  + * @version $Revision: 1.48 $ $Date: 2002/01/01 21:30:48 $
    */
   
   public class DefaultServlet
  @@ -1312,7 +1312,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)
  @@ -1484,6 +1484,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;
  @@ -1506,6 +1507,7 @@
               int dashPos = rangeDefinition.indexOf('-');
   
               if (dashPos == -1) {
  +                response.addHeader("Content-Range", "bytes */" + fileLength);
                   response.sendError
                       (HttpServletResponse.SC_REQUESTED_RANGE_NOT_SATISFIABLE);
                   return null;
  @@ -1518,6 +1520,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);
  @@ -1536,6 +1540,8 @@
                       else
                           currentRange.end = fileLength - 1;
                   } catch (NumberFormatException e) {
  +                    response.addHeader("Content-Range", 
  +                                       "bytes */" + fileLength);
                       response.sendError
                           (HttpServletResponse
                            .SC_REQUESTED_RANGE_NOT_SATISFIABLE);
  @@ -1545,6 +1551,7 @@
               }
   
               if (!currentRange.validate()) {
  +                response.addHeader("Content-Range", "bytes */" + fileLength);
                   response.sendError
                       (HttpServletResponse.SC_REQUESTED_RANGE_NOT_SATISFIABLE);
                   return null;
  @@ -2243,8 +2250,10 @@
            * Validate range.
            */
           public boolean validate() {
  -            return ( (start >= 0) && (end >= 0) && (start <= end) 
  -                     && (length > 0) && (end < length) );
  +            if (end >= length)
  +                end = length - 1;
  +            return ( (start >= 0) && (end >= 0) && (start <= end)
  +                     && (length > 0) );
           }
   
           public void recycle() {
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>