unix: stop reading if an error is produced
This aligns the behavior with Windows, where users don't need to call `uv_read_stop` or `uv_close` if they get an error in the read callback. PR-URL: https://github.com/libuv/libuv/pull/47 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
This commit is contained in:
parent
b1bb9053a5
commit
873b02607c
@ -1118,8 +1118,13 @@ static void uv__read(uv_stream_t* stream) {
|
||||
} else {
|
||||
/* Error. User should call uv_close(). */
|
||||
stream->read_cb(stream, -errno, &buf);
|
||||
assert(!uv__io_active(&stream->io_watcher, UV__POLLIN) &&
|
||||
"stream->read_cb(status=-1) did not call uv_close()");
|
||||
if (stream->flags & UV_STREAM_READING) {
|
||||
stream->flags &= ~UV_STREAM_READING;
|
||||
uv__io_stop(stream->loop, &stream->io_watcher, UV__POLLIN);
|
||||
if (!uv__io_active(&stream->io_watcher, UV__POLLOUT))
|
||||
uv__handle_stop(stream);
|
||||
uv__stream_osx_interrupt_select(stream);
|
||||
}
|
||||
}
|
||||
return;
|
||||
} else if (nread == 0) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user