windows: avoid assertion failure when pipe server is closed
When a pipe server is closed, all pending accept requests and their associated HANDLEs are closed to force windows to cancel the ConnectNamedPipe IRP. The returned request has the `pipeHandle` field set to INVALID_HANDLE_VALUE, which trips an assert in uv_pipe_process_accept_req. This patch fixes that.
This commit is contained in:
parent
9d60214b3a
commit
7b16a3f508
@ -1480,6 +1480,13 @@ void uv_process_pipe_accept_req(uv_loop_t* loop, uv_pipe_t* handle,
|
|||||||
|
|
||||||
assert(handle->type == UV_NAMED_PIPE);
|
assert(handle->type == UV_NAMED_PIPE);
|
||||||
|
|
||||||
|
if (handle->flags & UV__HANDLE_CLOSING) {
|
||||||
|
/* The req->pipeHandle should be freed already in uv_pipe_cleanup(). */
|
||||||
|
assert(req->pipeHandle == INVALID_HANDLE_VALUE);
|
||||||
|
DECREASE_PENDING_REQ_COUNT(handle);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (REQ_SUCCESS(req)) {
|
if (REQ_SUCCESS(req)) {
|
||||||
assert(req->pipeHandle != INVALID_HANDLE_VALUE);
|
assert(req->pipeHandle != INVALID_HANDLE_VALUE);
|
||||||
req->next_pending = handle->pending_accepts;
|
req->next_pending = handle->pending_accepts;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user