ra_serf status ============== This library is an RA-layer implementation of a WebDAV client that uses Serf. Serf's homepage is at: http://code.google.com/p/serf/ The latest serf releases can be fetched at: http://code.google.com/p/serf/downloads/list The latest serf sources can be fetched via SVN at: http://serf.googlecode.com/svn/trunk/ ra_serf can be enabled with the following configure flags: "--with-serf=/path/to/serf/install" As Neon is currently Subversion's default RA DAV layer, you also need to add "http-library = serf" to your ~/.subversion/servers file to choose ra_serf at runtime. Alternately, you can build with only support for ra_serf: "--without-neon --with-serf=/path/to/serf/install" For more about how ra_serf/ra_neon talk WebDAV, consult notes/webdav-protocol. Working copies are interchangable between ra_serf and ra_neon. (They both use the svn:wc:ra_dav:version-url property to store the latest revision of a file.) Completed tasks --------------- - Core functionality complete (see regression test status below) - https support (SSL) - Basic authentication - Update parallelization/pipelining (also for status/diff/switch/etc) - Does not require inline base64-encoding of content - 4 connections are open on an update (matches browser's default behavior) - 1 connection is used for the REPORT; 3 are used to fetch files & props - Supports http-compression config flag - SSL client certificates Regression test status ---------------------- All current regression tests are known to pass on: - Debian/AMD64 with APR 1.3.x - Mac OS X - Solaris ra_serf is also known to compile and work on: - Windows Things to do before the next release (1.5.x timeframe) ------------------------------------------------------ - Proxy support - Digest authentication - NTLM/SSPI integration for Windows folks Nice to haves ------------- - Move some of the code from ra_serf into serf. Serf doesn't have a very high-level API; but the code in util.c can go a long way towards that. - Commit paralleization/pipelining - Determine how to use HTTP pipelining and multiple connections for commit - May need response from CHECKOUT to issue PUT/PROPPATCH - ra_svn has a custom commit pipelining that may be worth investigating too - Use PROPFIND Depth: 1 when we are adding a directory locally to skip fetching properties on files - Discover server's keep-alive setting via OPTIONS requests and notify serf - Fix bug in mod_dav_svn that omits remove-prop in the update-report when a lock is broken and send-all is false. (See upd_change_xxx_prop in mod_dav_svn/update.c) - Fix bug in mod_dav_svn/mod_deflate that causes it to hold onto the entire REPORT response until it is completed. (This is why ra_serf doesn't request gzip compression on the REPORT requests.) - Remove remaining abort()s - ;-) aka add better debug logging