unix: stop stream POLLOUT watcher on write error
The node.js test suite sometimes hits the assert that was added in
commit 4146805 that checks if there are connect, write or shutdown
requests pending when the user calls uv_read_stop() while the stream
is primed for writing.
The libuv user (i.e. node.js) is supposed to close the stream on error.
Because uv__stream_close() calls uv_read_stop(), it's possible that the
POLLOUT watcher is still active.
This commit is contained in:
parent
8e16f8e056
commit
b329d51ef4
@ -798,6 +798,9 @@ start:
|
||||
/* Error */
|
||||
req->error = errno;
|
||||
uv__write_req_finish(req);
|
||||
uv__io_stop(stream->loop, &stream->io_watcher, UV__POLLOUT);
|
||||
if (!uv__io_active(&stream->io_watcher, UV__POLLIN))
|
||||
uv__handle_stop(stream);
|
||||
return;
|
||||
} else if (stream->flags & UV_STREAM_BLOCKING) {
|
||||
/* If this is a blocking stream, try again. */
|
||||
|
||||
Loading…
Reference in New Issue
Block a user