From cf0130dc0df788bece8f905f7d295e15c0f523cc Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Sun, 25 Oct 2015 11:48:41 -0700 Subject: [PATCH] lib: return boolean from child.send() Previous change reinstated returning boolean from child.send() but missed one instance where undefined might be returned instead. PR-URL: https://github.com/nodejs/node/pull/3577 Reviewed-By: Ben Noordhuis --- lib/internal/child_process.js | 2 +- ...test-child-process-send-returns-boolean.js | 22 ++++++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/lib/internal/child_process.js b/lib/internal/child_process.js index da213955a59..e93e1ae2e62 100644 --- a/lib/internal/child_process.js +++ b/lib/internal/child_process.js @@ -551,7 +551,7 @@ function setupChannel(target, channel) { handle: handle, message: message.msg, }); - return; + return this._handleQueue.length === 1; } var obj = handleConversion[message.type]; diff --git a/test/parallel/test-child-process-send-returns-boolean.js b/test/parallel/test-child-process-send-returns-boolean.js index b7518469478..73d4454087e 100644 --- a/test/parallel/test-child-process-send-returns-boolean.js +++ b/test/parallel/test-child-process-send-returns-boolean.js @@ -1,9 +1,29 @@ 'use strict'; const common = require('../common'); const assert = require('assert'); +const path = require('path'); +const net = require('net'); const fork = require('child_process').fork; +const spawn = require('child_process').spawn; -const n = fork(common.fixturesDir + '/empty.js'); +const emptyFile = path.join(common.fixturesDir, 'empty.js'); + +const n = fork(emptyFile); const rv = n.send({ hello: 'world' }); assert.strictEqual(rv, true); + +const spawnOptions = { stdio: ['pipe', 'pipe', 'pipe', 'ipc'] }; +const s = spawn(process.execPath, [emptyFile], spawnOptions); +var handle = null; +s.on('exit', function() { + handle.close(); +}); + +net.createServer(common.fail).listen(common.PORT, function() { + handle = this._handle; + assert.strictEqual(s.send('one', handle), true); + assert.strictEqual(s.send('two', handle), true); + assert.strictEqual(s.send('three'), false); + assert.strictEqual(s.send('four'), false); +});