If header evaluation on MOVE request with both source and destination resources locked

All,

I am reviewing the If header field processing in the Cyrus *DAV server 
component.

I'm confused by the text in RFC 4918 with respect to a MOVE request 
where both the source and destination resources are locked.

The last sentence of Section 7.5 
<https://datatracker.ietf.org/doc/html/rfc4918#section-7.5> states:

For example, if a resource is to be moved
    and both the source and destination are locked, then two lock tokens
    must be submitted in the If header, one for the source and the other
    for the destination.

This leads me to believe that the MOVE request would have to contain two 
Tagged-List components and look something like:

MOVE /file1.txt HTTP/1.1
Destination: /file2.txt
Overwrite: T
If: </file1.txt> (file1-lock-token)
     </file2.txt> (file2-lock-token)

Logic would tell me that BOTH of the submitted lock tokens would have to 
match their respective resources in order to successfully process the MOVE.

However, the last paragraph in Section 10.4.3 
<https://datatracker.ietf.org/doc/html/rfc4918#section-10.4.3> states:

Finally, the whole If header evaluates to true if and only if at
    least one of the No-tag-list or Tagged-list productions evaluates to
    true.

I read this as saying that ONLY ONE of the submitted lock tokens need to 
match, NOT both.  Am I reading the text incorrectly or is the text 
itself incorrect?

-- 
Kenneth Murchison
Staff Software Developer
Fastmail US LLC
IETF MailMaint Co-Chair

Received on Thursday, 28 May 2026 15:34:33 UTC