summaryrefslogtreecommitdiff
path: root/lib/internal/bootstrap/node.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/internal/bootstrap/node.js')
-rw-r--r--lib/internal/bootstrap/node.js20
1 files changed, 17 insertions, 3 deletions
diff --git a/lib/internal/bootstrap/node.js b/lib/internal/bootstrap/node.js
index 071b68903d..360b871d0c 100644
--- a/lib/internal/bootstrap/node.js
+++ b/lib/internal/bootstrap/node.js
@@ -67,9 +67,6 @@ process.config = JSON.parse(internalBinding('native_module').config);
const rawMethods = internalBinding('process_methods');
// Set up methods and events on the process object for the main thread
if (isMainThread) {
- // This depends on process being an event emitter
- mainThreadSetup.setupSignalHandlers(internalBinding);
-
process.abort = rawMethods.abort;
const wrapped = mainThreadSetup.wrapProcessMethods(rawMethods);
process.umask = wrapped.umask;
@@ -320,6 +317,23 @@ if (process.env.NODE_V8_COVERAGE) {
};
}
+// Worker threads don't receive signals.
+if (isMainThread) {
+ const {
+ isSignal,
+ startListeningIfSignal,
+ stopListeningIfSignal
+ } = mainThreadSetup.createSignalHandlers();
+ process.on('newListener', startListeningIfSignal);
+ process.on('removeListener', stopListeningIfSignal);
+ // re-arm pre-existing signal event registrations
+ // with this signal wrap capabilities.
+ const signalEvents = process.eventNames().filter(isSignal);
+ for (const ev of signalEvents) {
+ process.emit('newListener', ev);
+ }
+}
+
if (getOptionValue('--experimental-report')) {
const {
config,