- From: Julian Reschke <julian.reschke@gmx.de>
- Date: Thu, 02 Dec 2004 23:27:14 +0100
- To: ejw@cs.ucsc.edu
- CC: "'WebDAV (WebDAV WG)'" <w3c-dist-auth@w3.org>
Jim Whitehead wrote: > > >>REBIND /CollW HTTP/1.1 >>If: <http://example.com/CollW/CollY/CollZ> (<L3>) >><http://example.com/CollW/CollX> (<L2>) >>Overwrite: T >> >><rebind xmlns="DAV:"> >> <segment>CollX</segment> >> <href>/CollW/CollY/CollZ</href> >></rebind> >> >>Reason: we need to supply both lock tokens as we're removing >>a binding >>to C3 that is protected by the lock L3, and we're removing the target >>binding /CollW/CollY which is protected by the lock L2. > > > This doesn't sound right to me. I'd say that we're removing the binding > C3:(CollZ->C1), and hence we need the lock token L3. We're then creating the > binding C3:(CollZ->C2), which requires the lock tokens L3 and L2, since C3's > state is being modified (hence L3), and C2 is the destination (hence L2). > I'm pretty confident of all except the final statement. I missed the bind loop... This causes L2 and L3 to protect overlapping sets of URIs, so they must be shared locks, correct? >>we're removing the target >>binding /CollW/CollY which is protected by the lock L2. > > > Isn't binding /CollW/CollY/ -- that is, C1:(CollY->C3) -- covered by lock > L3? I guess we should stick with diagrams until we agree on the operation we're performing...: Before: +------------------+ | Root Collection | | bindings: | | CollW | +------------------+ | | | +-------------------------------+ | Collection C1 |<--------+ | bindings: | | | CollX CollY | | +-------------------------------+ | | | | | | (creates loop) | | | | +-----------------+ +------------------+ | | Collection C2 | | Collection C3 | | | LOCKED infinity | | LOCKED infinity | | | bindings: | | bindings: | | | {none} | | y.gif CollZ | | +-----------------+ +------------------+ | | | | | +------+ | +---------------------------+ | Resource R2 | | (lock inhereited from C3) | +---------------------------+ After: +------------------+ | Root Collection | | bindings: | | CollW | +------------------+ | | | +-------------------------------+ | Collection C1 | | bindings: | | CollX CollY | +-------------------------------+ | ^ | +-+ | | +-----------------+ +------------------+ | Collection C2 | | Collection C3 | | | LOCKED infinity | | bindings: | | bindings: | | {none} | | y.gif | +-----------------+ +------------------+ | | | +---------------------------+ | Resource R2 | | (lock inhereited from C3) | +---------------------------+ So C2 doesn't have any bindings in scope anymore (and thus no lock), and C1's new binding CollX identifies C1 itself, creating a new bind loop. I have the nagging feeling that this wasn't what you intended to do :-) Best regards, Julian -- <green/>bytes GmbH -- http://www.greenbytes.de -- tel:+492512807760
Received on Thursday, 2 December 2004 22:27:52 UTC