On 2010-07-23 19:33, Thorsten Steinbrenner wrote:

> figured out, that I probably have a problem with my WebDAV server and
> not with a bug of Zotero itself ("It's your WebDAV server, not Zotero.
> The server is returning a 204, and the timestamp isn't changing.").

Hmmm...

204 is a success answer.

RFC2616 (HTTP):

9.6 PUT:
---8<---
If an existing resource is modified, either the 200 (OK) or 204 (No
Content) response codes SHOULD be sent to indicate successful completion
of the request.
---8<---

10.2.5 204 No Content:
---8<---
The server has fulfilled the request but does not need to return an
entity-body, and might want to return updated metainformation. The
response MAY include new or updated metainformation in the form of
entity-headers, which if present SHOULD be associated with the requested
variant.
---8<---

So if the a file with the same name as that sent with PUT allready
exists, the 204 answer is correct.

RFC4918 (WebDAV):

9.7.1 PUT for Non-Collection Resources:
---8<---
Properties defined on the resource may be recomputed during PUT
processing but are not otherwise affected.
---8<---

15.7 getlastmodified Property:
---8<---
Contains the Last-Modified header value (from Section 14.29 of
[RFC2616]) as it would be returned by a GET method without accept headers.
---8<---
The last-modified date on a resource SHOULD only reflect changes in the
body (the GET responses) of the resource.
---8<---

My interpretation of this is that

1) the server cannot be trusted to update properties such as time stamps
when modifying the content of a resource. I might be a very good idea,
but not a requirement.

2) A put of a zero size file to an existing zero size file might not be
considered a change int the body of the resource by all servers.


The proper (untested by me) way to do this in DAV probably is to use the
PROPPATCH method to set the time stamps (creationdate and
getlastmodified properties), and use PROPFIND to check them.

Using PROPPATCH would be the equivalent of using the "touch" command
line utility. If it works.


> apfel:~ ts$ curl -T empty -u zotero:secret --verbose

[output snipped]

Assuming that <http://abc.d/zotero/empty> allready existed as that
command was executed I see nothing wrong in either the request or the
answer in that transaction.

I can't know wether the Date header in the answer is correct or not, but
note how RFC2616 uses MAY and SHOULD with relation to the 204 answer.
This means that the client can't really trust that the Date header in
the answer contains the new time stamp of the uploaded file.

Regards
/Jonas
-- 
Jonas Eckerman
Fruktträdet & Förbundet Sveriges Dövblinda
http://www.fsdb.org/
http://www.frukt.org/
http://whatever.frukt.org/

---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: users-unsubscr...@httpd.apache.org
   "   from the digest: users-digest-unsubscr...@httpd.apache.org
For additional commands, e-mail: users-h...@httpd.apache.org

Reply via email to