On Jan 7, 2005, at 1:54 AM, Greg Hudson wrote:
> On Thu, 2005-01-06 at 23:01, Ben Collins-Sussman wrote:
>> The problem is that in order to issue an http UNLOCK request, I need a
>> URI to run it on. But RA->unlock() takes only a token, not a path!
>
> I'm confused.
>
> When I asked why we needed a libsvn_fs table indexed by lock token (and
> not just one indexed by path), I thought I was told that it's because
> DAV needs a way to unlock by token. But if the DAV unlock request
> includes a URL (which corresponds to an FS path), then why do we need
> to
> be able to unlock by token only?
>
As Julian said, the DAV protocol itself doesn't unlock by token.
But mod_dav's locking-vtable defines at least two functions that need
to be able to *look up* a lock by token. The functions receive a
dav_resource and a token, and are instructed to either return the
associated lock_t structure or to refresh the associated lock. (The
reason both path and token are passed is because it's possible for a
DAV server supports multiple shared locks on a path.)
In any case, this is why svn_fs.h defines both
svn_fs_get_lock_from_path()
svn_fs_get_lock_from_token()
Looking over the two mod_dav_svn vtable funcs (dav_svn_refresh_locks()
and dav_svn_find_lock())... they *could* be reimplemented to call
_lock_from_path() instead of _lock_from_token() if we really wanted
that. IOW, if we wanted to delete the _lock_from_token() API from
svn_fs.h altogether, we'd be just fine. I don't think there are any
other callers. But as a matter of completeness, it seems odd for our
fs locking API to return tokens that "represent locks", and yet not
have an API to lookup by token.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Fri Jan 7 14:40:03 2005