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.