ozeigermann    2004/02/05 03:35:40

  Modified:    src/webdav/server/org/apache/slide/webdav/method Tag:
                        SLIDE_2_0_RELEASE_BRANCH GetMethod.java
  Log:
  Applyed patch by Chris Sharp:
  The "Content-Length"  header is incorrectly set to the size of total file 
  length and not the length of the range requested. This patch fixes it.
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.40.2.1  +9 -7      
jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/GetMethod.java
  
  Index: GetMethod.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/GetMethod.java,v
  retrieving revision 1.40
  retrieving revision 1.40.2.1
  diff -u -r1.40 -r1.40.2.1
  --- GetMethod.java    18 Sep 2003 11:01:07 -0000      1.40
  +++ GetMethod.java    5 Feb 2004 11:35:40 -0000       1.40.2.1
  @@ -309,7 +309,7 @@
                               resp.addHeader("Content-Range", "bytes "
                                                  + range.start
                                                  + "-" + range.end + "/"
  -                                               + range.length);
  +                                               + range.fileLength);
                               resp.setContentLength((int) range.length);
                               resp.setContentType
                                   (revisionDescriptor.getContentType());
  @@ -687,7 +687,7 @@
                   ostream.println("Content-Type: " + contentType);
               ostream.println("Content-Range: bytes " + currentRange.start
                                   + "-" + currentRange.end + "/"
  -                                + currentRange.length);
  +                                + currentRange.fileLength);
               ostream.println();
   
               // Printing content
  @@ -887,7 +887,7 @@
               String rangeDefinition = commaTokenizer.nextToken();
   
               Range currentRange = new Range();
  -            currentRange.length = fileLength;
  +            currentRange.fileLength = fileLength;
   
               int dashPos = rangeDefinition.indexOf('-');
   
  @@ -930,6 +930,7 @@
   
               }
   
  +            currentRange.length = (currentRange.end - currentRange.start);
               if (!currentRange.validate()) {
                   response.sendError
                       (HttpServletResponse.SC_REQUESTED_RANGE_NOT_SATISFIABLE);
  @@ -951,13 +952,14 @@
           public long start;
           public long end;
           public long length;
  +        public long fileLength;
   
           /**
            * Validate range.
            */
           public boolean validate() {
               return ( (start >= 0) && (end >= 0) && (length > 0)
  -                        && (start <= end) && (end < length) );
  +                        && (start <= end) && (end < fileLength) && (fileLength >= 
length));
           }
   
       }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to