blob: d3baf332440ef28798d07fab88f485f279aa12c8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
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 and server certificates
- Proxy support
- NTLM/SSPI integration for Windows folks
- REPORT body buckets can now be read twice (#3212)
Regression test status
----------------------
All current regression tests are known to pass on:
- Debian/AMD64 with APR 1.3.x
- Mac OS X
- Solaris
- Windows
Things to do before the next release (1.6.x timeframe)
------------------------------------------------------
- Digest authentication
- Fix the editor API violation (TBC, #2932)
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 parallellization/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
- Support for HTTP/1.0 pnly proxies.
|