win,pipe: properly set uv_write_t.send_handle in uv_write2()
PR-URL: https://github.com/libuv/libuv/pull/1843 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Bartosz Sosnowski <bartosz@janeasystems.com> Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
This commit is contained in:
parent
58dd8d455e
commit
e7e8b6fb9b
@ -504,7 +504,7 @@ UV_EXTERN int uv_try_write(uv_stream_t* handle,
|
|||||||
struct uv_write_s {
|
struct uv_write_s {
|
||||||
UV_REQ_FIELDS
|
UV_REQ_FIELDS
|
||||||
uv_write_cb cb;
|
uv_write_cb cb;
|
||||||
uv_stream_t* send_handle;
|
uv_stream_t* send_handle; /* TODO: make private and unix-only in v2.x. */
|
||||||
uv_stream_t* handle;
|
uv_stream_t* handle;
|
||||||
UV_WRITE_PRIVATE_FIELDS
|
UV_WRITE_PRIVATE_FIELDS
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1254,6 +1254,7 @@ static int uv_pipe_write_impl(uv_loop_t* loop,
|
|||||||
|
|
||||||
UV_REQ_INIT(req, UV_WRITE);
|
UV_REQ_INIT(req, UV_WRITE);
|
||||||
req->handle = (uv_stream_t*) handle;
|
req->handle = (uv_stream_t*) handle;
|
||||||
|
req->send_handle = send_handle;
|
||||||
req->cb = cb;
|
req->cb = cb;
|
||||||
req->ipc_header = 0;
|
req->ipc_header = 0;
|
||||||
req->event_handle = NULL;
|
req->event_handle = NULL;
|
||||||
|
|||||||
@ -149,6 +149,7 @@ static void connect_cb(uv_connect_t* req, int status) {
|
|||||||
&ctx.send.stream,
|
&ctx.send.stream,
|
||||||
NULL);
|
NULL);
|
||||||
ASSERT(r == 0);
|
ASSERT(r == 0);
|
||||||
|
ASSERT(ctx.write_req.send_handle == &ctx.send.stream);
|
||||||
|
|
||||||
/* Perform two writes to the same pipe to make sure that on Windows we are
|
/* Perform two writes to the same pipe to make sure that on Windows we are
|
||||||
* not running into issue 505:
|
* not running into issue 505:
|
||||||
@ -160,6 +161,7 @@ static void connect_cb(uv_connect_t* req, int status) {
|
|||||||
&ctx.send2.stream,
|
&ctx.send2.stream,
|
||||||
NULL);
|
NULL);
|
||||||
ASSERT(r == 0);
|
ASSERT(r == 0);
|
||||||
|
ASSERT(ctx.write_req2.send_handle == &ctx.send2.stream);
|
||||||
|
|
||||||
r = uv_read_start((uv_stream_t*)&ctx.channel, alloc_cb, recv_cb);
|
r = uv_read_start((uv_stream_t*)&ctx.channel, alloc_cb, recv_cb);
|
||||||
ASSERT(r == 0);
|
ASSERT(r == 0);
|
||||||
@ -344,6 +346,7 @@ static void read_cb(uv_stream_t* handle,
|
|||||||
&recv->stream,
|
&recv->stream,
|
||||||
write2_cb);
|
write2_cb);
|
||||||
ASSERT(r == 0);
|
ASSERT(r == 0);
|
||||||
|
ASSERT(write_req->send_handle == &recv->stream);
|
||||||
} while (uv_pipe_pending_count(pipe) > 0);
|
} while (uv_pipe_pending_count(pipe) > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user