Bert mentioned to me that svnserve sometimes exits successfully after a
genuine fatal error.

In r1544253 I added error checking to some socket initiliazation cases. I
haven't reproduced such errors, I just followed the obvious coding pattern
to add the missing checks.

I would appreciate a review of that to ensure it wasn't ignoring errors on
purpose in either of those places.

In r1544256 I added error checking to the main exit code path of both inetd
and tunnel modes. This one is easily demonstrated and pretty obvious I
think:

[[[
# previously:
$ echo foo | svnserve -t
( success ( 2 2 ( ) ( edit-pipeline svndiff1 absent-entries commit-revprops
depth log-revprops atomic-revprops partial-replay inherited-props
ephemeral-txnprops file-revs-reverse ) ) )
julianfoad@julian-think ~/src/subversion-c
$ echo $?
0

$ echo foo | svnserve -t
# now:
( success ( 2 2 ( ) ( edit-pipeline svndiff1 absent-entries commit-revprops
depth log-revprops atomic-revprops partial-replay inherited-props
ephemeral-txnprops file-revs-reverse ) ) )
/.../subversion/svnserve/serve.c:3622,
/.../subversion/libsvn_ra_svn/marshal.c:1372:
(apr_err=SVN_ERR_RA_SVN_MALFORMED_DATA)
svnserve: E210004: Malformed network data
$ echo $?
1
]]]

Review appreciated, again, though, as I don't know what strange
configurations people might possibly have where they're perhaps relying on
getting no error report. Hopefully not, but sometimes people do strange
things.

- Julian

Reply via email to