Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/node_messaging.cc2
-rw-r--r--test/parallel/test-worker-message-port-close.js8
2 files changed, 9 insertions, 1 deletions
diff --git a/src/node_messaging.cc b/src/node_messaging.cc
index aac1245f269..6403950e9c8 100644
--- a/src/node_messaging.cc
+++ b/src/node_messaging.cc
@@ -980,7 +980,7 @@ void MessagePort::PostMessage(const FunctionCallbackInfo<Value>& args) {
// Even if the backing MessagePort object has already been deleted, we still
// want to serialize the message to ensure spec-compliant behavior w.r.t.
// transfers.
- if (port == nullptr) {
+ if (port == nullptr || port->IsHandleClosing()) {
Message msg;
USE(msg.Serialize(env, context, args[0], transfer_list, obj));
return;
diff --git a/test/parallel/test-worker-message-port-close.js b/test/parallel/test-worker-message-port-close.js
index 6abc01d1b7b..6562824d6a9 100644
--- a/test/parallel/test-worker-message-port-close.js
+++ b/test/parallel/test-worker-message-port-close.js
@@ -39,3 +39,11 @@ function dummy() {}
message: 'Cannot send data on closed MessagePort'
});
}
+
+// Refs: https://github.com/nodejs/node/issues/42296
+{
+ const ch = new MessageChannel();
+ ch.port1.onmessage = common.mustNotCall();
+ ch.port2.close();
+ ch.port2.postMessage('fhqwhgads');
+}