- if(!GetOverlappedResult(*handle, priv->overlapped, &ret, true))
- throw system_error("GetOverlappedResult");
+ if(!GetOverlappedResult(*handle, &priv->overlapped, &ret, true))
+ {
+ DWORD err = GetLastError();
+ if(err==ERROR_BROKEN_PIPE)
+ priv->eof = true;
+ else
+ throw system_error("GetOverlappedResult");
+ }