Skip to content

Commit

Permalink
build: don't squash signal handlers with --shared
Browse files Browse the repository at this point in the history
An application using node built as a shared library may legitimately
implement its own signal handling routines. Current behaviour is
to squash all signal handlers on node startup. This change will
stop that behaviour when node is built as a shared library.

PR-URL: nodejs#10539
Fixes: nodejs#10520
Refs: nodejs#615
Reviewed-By: Sam Roberts <[email protected]>
Reviewed-By: Gibson Fahnestock <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Ben Noordhuis <[email protected]>
  • Loading branch information
Stewart X Addison authored and italoacasas committed Jan 23, 2017
1 parent 4f400a0 commit e8ee2af
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion src/node.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2198,7 +2198,7 @@ static void WaitForInspectorDisconnect(Environment* env) {
if (env->inspector_agent()->IsConnected()) {
// Restore signal dispositions, the app is done and is no longer
// capable of handling signals.
#ifdef __POSIX__
#if defined(__POSIX__) && !defined(NODE_SHARED_MODE)
struct sigaction act;
memset(&act, 0, sizeof(act));
for (unsigned nr = 1; nr < kMaxSignal; nr += 1) {
Expand Down Expand Up @@ -4166,6 +4166,7 @@ inline void PlatformInit() {

CHECK_EQ(err, 0);

#ifndef NODE_SHARED_MODE
// Restore signal dispositions, the parent process may have changed them.
struct sigaction act;
memset(&act, 0, sizeof(act));
Expand All @@ -4179,6 +4180,7 @@ inline void PlatformInit() {
act.sa_handler = (nr == SIGPIPE) ? SIG_IGN : SIG_DFL;
CHECK_EQ(0, sigaction(nr, &act, nullptr));
}
#endif // !NODE_SHARED_MODE

RegisterSignalHandler(SIGINT, SignalExit, true);
RegisterSignalHandler(SIGTERM, SignalExit, true);
Expand Down

0 comments on commit e8ee2af

Please sign in to comment.