From 3d8c8145265020efc7485c4728580d420508b9ea Mon Sep 17 00:00:00 2001 From: Mathew Date: Tue, 30 Apr 2024 13:14:30 +1000 Subject: [PATCH] Calling uv_poll_start() on a handle that is already active is fine. Doing so will update the events mask that is being watched for. --- index.js | 7 +++++++ src/raw.cc | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index f63a6c1..2451e36 100644 --- a/index.js +++ b/index.js @@ -137,6 +137,13 @@ class Socket extends EventEmitter { this.wrap.pause (this.recvPaused, this.sendPaused); return this; } + + pause (recv, send) { + this.recvPaused = recv; + this.sendPaused = send; + this.wrap.pause (this.recvPaused, this.sendPaused); + return this; + } send (buffer, offset, length, address, beforeCallback, afterCallback) { diff --git a/src/raw.cc b/src/raw.cc index 909c290..8230e92 100644 --- a/src/raw.cc +++ b/src/raw.cc @@ -657,9 +657,10 @@ NAN_METHOD(SocketWrap::Pause) { | (pause_send ? 0 : UV_WRITABLE); if (! socket->deconstructing_ && socket->poll_initialised_) { - uv_poll_stop (socket->poll_watcher_); if (events) uv_poll_start (socket->poll_watcher_, events, IoEvent); + else + uv_poll_stop (socket->poll_watcher_); } info.GetReturnValue().Set(info.This());