Chris Darroch wrote:
Hi --

1) Per #38034, it appears that ap_meets_conditions() treats "*" incorrectly.

   More precisely, I should say that ap_meets_conditions() isn't designed
to support the NULL resources of RFC 2518 (WebDAV).  I'm certainly no
expert on these issues, so guidance is welcome.

Clarifying: RFC2518 doesn't invent "NULL resources", it just assigns a term to them.

   RFC 2616 section 14.24 (and 14.26 is similar) says, "If the request
would, without the If-Match header field, result in anything other than a
2xx or 412 status, then the If-Match header MUST be ignored."  Thus in
the typical case, if a resource doesn't exist, 404 should be returned,
so ap_meets_conditions() doesn't need to handle this case at all.

Unless it is a method that can be applied to a NULL resource, such as PUT, PATCH (?), MKCOL, LOCK...

   RFC 2518 introduces lock-null resources for use with certain
methods such as LOCK, PUT, and UNLOCK.  (RFC 4918, it seems, deprecates
lock-null resources in favour of "locked empty resources".)  For these
particular methods and resources, other language from RFC 2616's
section 14.24 (again, 14.26 is similar) comes into play, specifically,
"If none of the entity tags match, or if '*' is given and no current entity
exists, the server MUST NOT perform the requested method, and MUST return a
412 (Precondition Failed) response."

That's correct, but see above -- it's not restricted to lock-null resources, and also not to WebDAV methods.

...

Best regards, Julian

Reply via email to