Details

      Description

      There is a problem with the implementation of If header checking in WebdavRequestImpl.matchesIfHeader(), causing warnings and errors in the Litmus test suite, notably test cases cond_put_corrupt_token and fail_cond_put_unlocked.

      The main cause seems to be the assumption that evaluation of the If header isn't necessary if the resource isn't locked. That's incorrect, because If header evaluation should occur independently of the state of the resource (even if it doesn't exist). In particular, for a state token known not to represent the current state of the resource, such as "DAV:not-a-lock", the If header

      If: (<DAV:not-a-lock>)

      should evaluate to false (causing the request to fail with status 412), and consequently,

      If: (<x>) (Not <DAV:not-a-lock>)

      should always avaluate to true (for any x), because there is one untagged list production evaluating to true; thus the request should proceed.

      In RFC2518bis, the WebDAV WG has tried to clarify If header evaluation, see (<http://greenbytes.de/tech/webdav/draft-ietf-webdav-rfc2518bis-14.html#rfc.section.10.4>).

      1. JCR-406.patch
        3 kB
        Jukka Zitting

        Issue Links

          Activity

          Hide
          Julian Reschke added a comment -
          Show
          Julian Reschke added a comment - Updated document link: http://greenbytes.de/tech/webdav/rfc4918.html#rfc.section.10.4
          Hide
          Jukka Zitting added a comment -

          The attached patch enables If header evaluation even when the addressed resource is not locked.

          Show
          Jukka Zitting added a comment - The attached patch enables If header evaluation even when the addressed resource is not locked.

            People

            • Assignee:
              Unassigned
              Reporter:
              Julian Reschke
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:

                Development