--- GetMethod.java Thu Sep 18 04:01:07 2003
+++ GetMethod-Apple.java Tue Feb 3 12:52:22 2004
@@ -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('-');
@@ -929,7 +929,8 @@
}}
-
+
+ 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));
}
} On Feb 3, 2004, at 1:24 PM, Chris Sharp wrote:
Please find included a patch for a bug I discovered in the GetMethod class. The bug only affects byte range GET operations. The "Content-Length" header is incorrectly set to the size of total file length and not the length of the range requested. Here is a trace to clarify the bug:
127.000.000.001.64609-127.000.000.001.02150: GET /csharp/Documents/._TestProperties.java%20alias HTTP/1.1
User-Agent: WebDAVFS/1.2.6 (01268000) Darwin/7.2.0 (Power Macintosh)
Accept: */*
Host: localhost:2150
Authorization: Digest username="csharp", realm="idisk.mac.com", nonce="8cf13209e6eec9292ad4a4a603ddef44", uri="/csharp/Documents/._TestProperties.java%20alias", response="082af136af364c091bed22730a835508", opaque="9fdfc78d91a94bc84aa1528bf1f02e1f", qop="auth", nc=0000001a, cnonce="NDAxODJjYmQ6MDAwMDQxY2M="
If-Range: Wed, 28 Jan 2004 18:58:44 GMT
Range: bytes=32768-
127.000.000.001.02150-127.000.000.001.64609: HTTP/1.1 206 Partial Content
Content-Type: application/octet-stream
Content-Length: 50719
Connection: close
Expires: Thu, 01 Jan 1970 00:00:00 GMT
ETag: 4924983ab4487f3b7cfb7b8313981419
Content-Language: en
x-responding-server: csharp6
Date: Wed, 28 Jan 2004 21:42:27 GMT
Pragma: No-cache
Content-Range: bytes 32768-50718/50719
Server: AppleInternetServices
Last-Modified: Wed, 28 Jan 2004 18:58:44 GMT
Cache-Control: no-cache
Set-Cookie: JSESSIONID=EB4F2661ACA77E941C2213AF7AC8E469; Path=/
127.000.000.001.02150-127.000.000.001.64609: .......
The Content-Length of the entity body is 17951 bytes long, not 50719. The fix is very straightforward and is included with this e-mail.
Regards,
Chris .--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
