Some ra_svn operations don't report errors to the client. Instead, the errors cause the server process to exit, and the client sees a cryptic svn: Connection closed unexpectedly Here are the offenders: * update, switch, status, and diff, at the point where the client finishes the report and the server begins driving an editor. This is a tricky case, and I don't immediately know how to fix it. An error from svn_repos_finish_report can happen either before or after editor operations have begun, so it's hard to know what state the protocol is in. * commit, where it calls svn_repos_checkout. Again, it is hard to know what state the protocol is in when that function returns an error. * get-file and log, while they are streaming file or directory contents to the client. This is a simple enough matter of sending each part of the stream in a command-response instead of as a bare string or tuple.