summaryrefslogtreecommitdiff
path: root/ext/node/polyfills/internal_binding
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2023-07-19 03:04:26 +0530
committerGitHub <noreply@github.com>2023-07-18 23:34:26 +0200
commit51b3534b3d3833667e8c029564bebf319b0d2596 (patch)
tree5126ecf7ea971651003173e33b104d99e38d2172 /ext/node/polyfills/internal_binding
parent7e1218cd8f9856319e2c86e761e869ef48bf9c5f (diff)
fix(ext/node): check if resource can be used with write_vectored (#19868)
Fixes https://github.com/denoland/deno/issues/19766 Fixes https://github.com/denoland/deno/issues/19846
Diffstat (limited to 'ext/node/polyfills/internal_binding')
-rw-r--r--ext/node/polyfills/internal_binding/stream_wrap.ts8
1 files changed, 6 insertions, 2 deletions
diff --git a/ext/node/polyfills/internal_binding/stream_wrap.ts b/ext/node/polyfills/internal_binding/stream_wrap.ts
index 95f60fe95..528dd7c3f 100644
--- a/ext/node/polyfills/internal_binding/stream_wrap.ts
+++ b/ext/node/polyfills/internal_binding/stream_wrap.ts
@@ -199,14 +199,18 @@ export class LibuvStreamWrap extends HandleWrap {
allBuffers: boolean,
): number {
const supportsWritev = this.provider === providerType.TCPSERVERWRAP;
+ const rid = this[kStreamBaseField]!.rid;
// Fast case optimization: two chunks, and all buffers.
- if (chunks.length === 2 && allBuffers && supportsWritev) {
+ if (
+ chunks.length === 2 && allBuffers && supportsWritev &&
+ ops.op_can_write_vectored(rid)
+ ) {
// String chunks.
if (typeof chunks[0] === "string") chunks[0] = Buffer.from(chunks[0]);
if (typeof chunks[1] === "string") chunks[1] = Buffer.from(chunks[1]);
ops.op_raw_write_vectored(
- this[kStreamBaseField]!.rid,
+ rid,
chunks[0],
chunks[1],
).then((nwritten) => {