Ranged PUT and changing an entity's length


Mac OS X has a file system which uses HTTP and the WebDAV extensions. 
Today, when an file entity on a DAV server is opened with write access, 
our file system GETs the entire entity from the server and then works 
with the local copy. When that entity is closed or synced, the local 
copy is PUT back to the server.

I'd like to change our code so that individual write requests to the 
server entity are write-through to the server, but to do that, I need to 
be able to do a ranged PUT with the range possibly starting and ending 
beyond the entity's current instance-length (the current length of the 
entity on the server). In addition, to be able to handle seek and 
truncate requests, I need to be able to change the instance-length 
without changing any data to both to make the entity either larger or 

RFC 2616 doesn't really say how a Content-Range header might be used to 
specify a ranged PUT request (it only discusses how a server would use 
it to reply to a ranged GET), and nowhere that I can find does the RFC 
say how the length of an entity can be changed (although I was thinking 
that maybe the byte-content-range-spec in a Content-Range header could 
look something like "bytes */100" to set the length of an entity to 100 
without changing any data).

So, my two questions:

1 - Are ranged PUTs possible and if so, what should the headers look 

2 - Can the length of an entity be changed and if so, what should the 
headers look like?


Jim Luther
Apple Computer

Received on Friday, 1 February 2002 02:15:45 UTC