Skip to content

Commit 7153bec

Browse files
committed
src: always call ReadStop() before Close()
For libuv-backed streams, always explicitly stop reading before closing the handle. PR-URL: #19377 Reviewed-By: Ben Noordhuis <[email protected]> Reviewed-By: James M Snell <[email protected]>
1 parent 61415dc commit 7153bec

File tree

3 files changed

+9
-1
lines changed

3 files changed

+9
-1
lines changed

src/handle_wrap.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ class HandleWrap : public AsyncWrap {
7070

7171
inline uv_handle_t* GetHandle() const { return handle_; }
7272

73-
void Close(v8::Local<v8::Value> close_callback = v8::Local<v8::Value>());
73+
virtual void Close(
74+
v8::Local<v8::Value> close_callback = v8::Local<v8::Value>());
7475

7576
protected:
7677
HandleWrap(Environment* env,

src/stream_wrap.cc

+5
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,11 @@ void LibuvStreamWrap::AfterUvWrite(uv_write_t* req, int status) {
373373
req_wrap->Done(status);
374374
}
375375

376+
void LibuvStreamWrap::Close(v8::Local<v8::Value> close_callback) {
377+
ReadStop();
378+
HandleWrap::Close(close_callback);
379+
}
380+
376381
} // namespace node
377382

378383
NODE_BUILTIN_MODULE_CONTEXT_AWARE(stream_wrap,

src/stream_wrap.h

+2
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ class LibuvStreamWrap : public HandleWrap, public StreamBase {
7676
ShutdownWrap* CreateShutdownWrap(v8::Local<v8::Object> object) override;
7777
WriteWrap* CreateWriteWrap(v8::Local<v8::Object> object) override;
7878

79+
void Close(v8::Local<v8::Value> close_callback) override;
80+
7981
protected:
8082
LibuvStreamWrap(Environment* env,
8183
v8::Local<v8::Object> object,

0 commit comments

Comments
 (0)