There are any number of ways to get ra_dav to return totally useless error
messages, for example this happens when you use a svnsync that's built with an
old version of the dav protocol implementation:
subversion/libsvn_ra_dav/util.c:837: (apr_err=175002)
svnsync: REPORT request failed on 'http://localhost/svn/dev'
subversion/libsvn_ra_dav/util.c:297: (apr_err=175002)
svnsync: REPORT of 'http://localhost/svn/dev': 200 OK (http://localhost)
Wow, the error was 200 OK, that's useful!
It turns out the underlying issue is that we get an error while we're parsing
the REPORT xml, but the way we use neon doesn't give us any useful way to pass
data back from the callbacks into the parsed_request function in util.c. As a
result, we just look for any error, and if we can't recognize it we use neon's
error status, which in this case is a 200 OK, because we did successfully
download the data.
What we really need is a generic set of wrapper functions/baton that wrap the
neon XML parser callbacks. The new callbacks would accept svn_error_t's from
svn code and store them, so they can be detected after the parse finishes This
would let us return useful errors from within the xml parsing code, despite the
fact that neon only lets us return an int.
Filing this as an issue so I don't forget about how to fix the problem...