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 sources can be fetched via SVN at: http://serf.googlecode.com/svn/trunk/ ra_serf can be enabled with the following configure flags: "--without-neon --with-serf=/path/to/serf/install" (You need to disable neon and point at serf.) For more about how ra_serf/ra_dav talk WebDAV, consult notes/webdav-protocol. Working copies are interchangable between ra_serf and ra_dav. (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 Regression test status ---------------------- All regression tests are known to pass on: - Debian/AMD64 with APR 1.3.x The following tests 'fail' due to ordering differences with ra_serf: - FAIL: diff_tests.py 29: diff to BASE with local property mods - FAIL: diff_tests.py 31: diff a property change plus a local prop edit ra_serf is known to compile and work on: - Windows - Mac OS X - Solaris Things to do before 1.4.0 release --------------------------------- - Verify regression tests passage on the following platforms: - Windows - Mac OS X - Solaris - anything with APR 0.9.12 - Point at a packaged release of serf Things to do before the next release (1.5.x timeframe) ------------------------------------------------------ - Proxy support - Digest authentication - SSL client certificates - 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