diff --git a/src/handle_wrap.h b/src/handle_wrap.h index fd2d002dce0..b2b09f5010d 100644 --- a/src/handle_wrap.h +++ b/src/handle_wrap.h @@ -70,7 +70,8 @@ class HandleWrap : public AsyncWrap { inline uv_handle_t* GetHandle() const { return handle_; } - void Close(v8::Local close_callback = v8::Local()); + virtual void Close( + v8::Local close_callback = v8::Local()); protected: HandleWrap(Environment* env, diff --git a/src/stream_wrap.cc b/src/stream_wrap.cc index 0e700ba39a6..cdcbe574f9a 100644 --- a/src/stream_wrap.cc +++ b/src/stream_wrap.cc @@ -373,6 +373,11 @@ void LibuvStreamWrap::AfterUvWrite(uv_write_t* req, int status) { req_wrap->Done(status); } +void LibuvStreamWrap::Close(v8::Local close_callback) { + ReadStop(); + HandleWrap::Close(close_callback); +} + } // namespace node NODE_BUILTIN_MODULE_CONTEXT_AWARE(stream_wrap, diff --git a/src/stream_wrap.h b/src/stream_wrap.h index 7847ebe7546..94a161b6d54 100644 --- a/src/stream_wrap.h +++ b/src/stream_wrap.h @@ -76,6 +76,8 @@ class LibuvStreamWrap : public HandleWrap, public StreamBase { ShutdownWrap* CreateShutdownWrap(v8::Local object) override; WriteWrap* CreateWriteWrap(v8::Local object) override; + void Close(v8::Local close_callback) override; + protected: LibuvStreamWrap(Environment* env, v8::Local object,