Runs one inspection against an open descriptor, then always releases it.
The port reports whether a descriptor actually closed, and every place
the store opened one used to discard that answer, reporting a clean
success after the platform had said otherwise. Three sites, one rule, so
the rule lives here once: a descriptor that would not close fails the
inspection it belonged to.
Failing is all a caller can usefully do. Linux frees the descriptor
before reporting the error, so a retry would at best do nothing and at
worst close a descriptor some other code has since been given. What is
left is not to pretend the operation finished cleanly.
Runs one inspection against an open descriptor, then always releases it.
The port reports whether a descriptor actually closed, and every place the store opened one used to discard that answer, reporting a clean success after the platform had said otherwise. Three sites, one rule, so the rule lives here once: a descriptor that would not close fails the inspection it belonged to.
Failing is all a caller can usefully do. Linux frees the descriptor before reporting the error, so a retry would at best do nothing and at worst close a descriptor some other code has since been given. What is left is not to pretend the operation finished cleanly.