Browse Source

child_process: don't emit same handle twice

It's possible to read multiple messages off the parent/child channel.
When that happens, make sure that recvHandle is cleared after emitting
the first message so it doesn't get emitted twice.
v0.10.2-release
Ben Noordhuis 12 years ago
parent
commit
9352c19885
  1. 1
      lib/child_process.js
  2. 1
      test/simple/test-child-process-fork-getconnections.js

1
lib/child_process.js

@ -337,6 +337,7 @@ function setupChannel(target, channel) {
var message = JSON.parse(json); var message = JSON.parse(json);
handleMessage(target, message, recvHandle); handleMessage(target, message, recvHandle);
recvHandle = undefined;
start = i + 1; start = i + 1;
} }

1
test/simple/test-child-process-fork-getconnections.js

@ -35,6 +35,7 @@ if (process.argv[2] === 'child') {
} }
if (m.cmd === 'close') { if (m.cmd === 'close') {
assert.equal(socket, undefined);
sockets[m.id].once('close', function() { sockets[m.id].once('close', function() {
process.send({ id: m.id, status: 'closed' }); process.send({ id: m.id, status: 'closed' });
}); });

Loading…
Cancel
Save