Hallvard B Furuseth wrote:
Howard Chu writes:
But the caller doesn't know that. What it knows is that ber_get_next() returned LBER_DEFAULT.
And that's all that matters.
As long as the try-again error code isn't spurious, which is what I don't know when/how can happen. Though hopefully the caller will get another error when it tries again.
It does mean the caller can log the wrong error code though. In particular after a non-error return.
What are you talking about, re: spurious error codes? System calls only set errno when they fail. System calls return -1 when they fail. sb_rdahead_read() doesn't set errno either... That's why we have to zero errno out before doing the read, to make sure a stale error code from some previous op isn't hanging around - because read() *won't* touch it when it returns success.
If the caller doesn't see one of the try-again error codes, then the connection is dropped.