rs_fatal is overused
librsync has a function/macro rs_fatal etc, to indicate severe errors or internal bugs, which calls abort().
However as a well-behaved library, it's probably better if it doesn't do that unless there's no safe way to cleanly unwind. Probably most uses should be pulled out and it should just return an error.