When a non-blocking connect() has returned `EINPROGRESS`, it looks
like BSD can return `ENOTCONN` on `read()` even after a `write()`
succeeded.
throw runtime_error("EOF while reading message");
}
if (res < 0) {
- if (errno == EAGAIN || errno == EWOULDBLOCK) {
+ if (errno == EAGAIN || errno == EWOULDBLOCK || errno == ENOTCONN) {
return IOState::NeedRead;
}
else {
throw runtime_error("EOF while reading message");
}
if (res < 0) {
- if (errno == EAGAIN || errno == EWOULDBLOCK) {
+ if (errno == EAGAIN || errno == EWOULDBLOCK || errno == ENOTCONN) {
return IOState::NeedRead;
}
else {
throw runtime_error("EOF while sending message");
}
if (res < 0) {
- if (errno == EAGAIN || errno == EWOULDBLOCK) {
+ if (errno == EAGAIN || errno == EWOULDBLOCK || errno == ENOTCONN) {
return IOState::NeedWrite;
}
else {