On 1/14/14, 12:10 AM, vancaho wrote:
> How to write these DAV providers?

I'm not sure how much more info I could give short of writing it myself.  The
closest we have to documentation is what's in mod_dav.h.

There's a nice HTMLized version of what's in mod_dav.h here:
http://ci.apache.org/projects/httpd/trunk/doxygen/group__MOD__DAV.html

For BIND you need to implement this (vtable):
http://ci.apache.org/projects/httpd/trunk/doxygen/structdav__hooks__binding.html

For UPDATE you need to implement the update function on the dav_hooks_vsn
struct (vtable):
http://ci.apache.org/projects/httpd/trunk/doxygen/structdav__hooks__vsn.html#a58f63b737fe4264e04066cb59f0813bb

In the end you're probably going to have to read the source of mod_dav and
figure out how to do it as you go.

> Are there any existing DAV providers or examples?

There are only two publicly available DAV providers.  mod_dav_svn (Subversion)
and mod_dav_fs (included with httpd).  Neither of them implement these features.

Someone probably could extend mod_dav_fs to support BIND by using hard or
symbolic links on the local file system.

BIND might be implementable by Subversion by converting it into a svn:special
file.  Though I don't really see a good reason to do this unless there's a DAV
client out there that supports BIND and it's useful to someone when using
autoversioning mode.

UPDATE can't be implemented by mod_dav_fs without a lot of work, since it's
part of the DeltaV protocol which mod_dav_fs doesn't support.  Specifically,
mod_dav_fs would have to grow a whole versioning backend.

UPDATE isn't important to Subversion because we don't allow HEAD to point to
anything other than the last checked-in version.

I'd assume whoever wrote the hooks to support BIND and UPDATE wrote some sort
of code to test it, but I have no idea where that code would even be.  To the
best of my knowledge it's never been published.

Given that it hasn't been used much, it's likely there are bugs that would need
fixing if someone did try to use it.

Reply via email to