The one thing I'd wonder about is why you preserve the actual reason for the failure in the backend <-> frontend protocol. It seems to me that it would make more sense to report abstracted information about the failure, such as "is this failure temporary or permanent". If there are other ways that the Acquire engine is distinguishing between different failure modes, I would prefer to see those explicitly represented as well. I don't think that the Acquire code itself should really be dealing explicitly with the particular way the transport layer died (except perhaps to present an uninterpreted error string to the user). Daniel PS: I apologize if I misunderstood your patch, as so far I've just skimmed over it.
Attachment:
signature.asc
Description: Digital signature