Subject: BugZilla issue 213: PROPFIND consistencies

From: Julian Reschke <[email-masked]>
Date: Wed, 26 Apr 2006 18:54:27 +0200

Hi,

the proposed patches below fixes several problems with PROPFIND, some of 
which were recorded in BugZilla issue 213 
(<http://ietf.cse.ucsc.edu:8080/bugzilla/show_bug.cgi?id=213>):

Section 9.1., para. 2:
OLD:

    A client MUST submit a Depth header with a value of "0", "1", or
    "infinity" with a PROPFIND request.  Servers MUST support "0" and "1"
    depth requests on WebDAV-compliant resources and SHOULD support
    "infinity" requests.  In practice, support for depth infinity
    requests MAY be disabled, due to the performance and security
    concerns associated with this behavior.  Since clients weren't
    required to include the Depth header in [RFC2518], servers SHOULD
    treat such a request as if a "Depth: infinity" header was included.

NEW:

    A client may submit a Depth header with a value of "0", "1", or
    "infinity" with a PROPFIND request.  Servers MUST support "0" and "1"
    depth requests on WebDAV-compliant resources and SHOULD support
    "infinity" requests.  In practice, support for depth infinity
    requests MAY be disabled, due to the performance and security
    concerns associated with this behavior.  By default, the PROPFIND
    method without a Depth header MUST act as if a "Depth: infinity"
    header was included.

Discussion: requiring clients to send the Depth header (MUST), but also 
requiring servers to handle missing headers (SHOULD) does not make 
sense. If servers can not rely on the presence of the request header for 
backwards compatibility anyway, introducing a MUST level requirement to 
send just doesn't make any sense.

Proposal to revert to original language (note that otherwise this Change 
would need to be added to the Changes section).

Section 9.1., para. 4:
OLD:

     o  Request particular property values, by naming the properties
        desired within the 'prop' element (the ordering of properties in
        here MAY be ignored by server),

NEW:

     o  Request particular property values, by naming the properties
        desired within the 'prop' element,

Nothing in the spec indicates that ordering is relevant here, so 
mentioning it here IMHO is confusing.

Section 9.1., para. 10:
OLD:

    If there is an error retrieving a property then a proper error result
    MUST be included in the response.  A request to retrieve the value of
    a property which does not exist is an error and MUST be noted, if the
    response uses a 'multistatus' XML element, with a 'response' XML
    element which contains a 404 (Not Found) status value.

NEW:

    If there is an error retrieving a property then a proper error result
    MUST be included in the response.  A request to retrieve the value of
    a property which does not exist is an error and MUST be noted, with a
    'response' XML element which contains a 404 (Not Found) status value.

I think this is confusing, because it's always a Multistatus, right?

Section 9.1.1., para. 2:
OLD:

    403 Forbidden - A server MAY reject PROPFIND requests on collections
    with depth header of "Infinity", in which case it SHOULD use this
    error with the precondition code 'propfind-finite-depth' inside the
    error body.

NEW:

    403 Forbidden - A server MAY reject PROPFIND requests with depth
    header of "Infinity", in which case it SHOULD use this error with the
    precondition code 'propfind-finite-depth' inside the error body.

s/on collections//. The request may be rejected on any type of resource.

Section 9.1.2., para. 2:
OLD:

       200 OK - A property exists and/or its value is successfully
       returned.

       401 Unauthorized - The property cannot be viewed without
       appropriate authorization.

       403 Forbidden - The property cannot be viewed regardless of
       authentication.

       404 Not Found - The property does not exist.

NEW:

    200 OK - A property exists and/or its value is successfully returned.

    401 Unauthorized - The property cannot be viewed without appropriate
    authorization.

    403 Forbidden - The property cannot be viewed regardless of
    authentication.

    404 Not Found - The property does not exist.

(Indentation inconsistent with other sections)

Section 16., para. 31:
OLD:

    Purpose:  (precondition) -- This server does not allow infinite-depth
       PROPFIND requests on collections.

NEW:

    Purpose:  (precondition) -- This server does not allow infinite-depth
       PROPFIND requests.

Again, strike "on collections".

Best regards, Julian