Skip to content

Commit

Permalink
worker: do not send message if port is closing
Browse files Browse the repository at this point in the history
Fixes: #42296

PR-URL: #42357
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
  • Loading branch information
Trott authored and juanarbol committed May 1, 2022
1 parent dcaed6d commit de474c8
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/node_messaging.cc
Expand Up @@ -964,7 +964,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;
Expand Down
8 changes: 8 additions & 0 deletions test/parallel/test-worker-message-port-close.js
Expand Up @@ -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');
}

0 comments on commit de474c8

Please sign in to comment.