123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
- From: Samuel Attard <[email protected]>
- Date: Mon, 7 Mar 2022 16:36:28 -0800
- Subject: feat: add kNoStartDebugSignalHandler to Environment to prevent
- SIGUSR1 handling
- This patch should be upstreamed, it allows embedders to prevent the call to StartDebugSignalHandler which handles SIGUSR1 and starts the inspector agent. Apps that have --inspect disabled also don't want SIGUSR1 to have this affect.
- diff --git a/src/env-inl.h b/src/env-inl.h
- index 793dc72e0dbad819a1c3a51521b4a39b76c7015d..222c78ef0cb9904742fd44f8182278ab1f50cd59 100644
- --- a/src/env-inl.h
- +++ b/src/env-inl.h
- @@ -677,6 +677,10 @@ inline bool Environment::no_global_search_paths() const {
- !options_->global_search_paths;
- }
-
- +inline bool Environment::should_start_debug_signal_handler() const {
- + return (flags_ & EnvironmentFlags::kNoStartDebugSignalHandler) == 0;
- +}
- +
- inline bool Environment::no_browser_globals() const {
- // configure --no-browser-globals
- #ifdef NODE_NO_BROWSER_GLOBALS
- diff --git a/src/env.h b/src/env.h
- index afe67d2237ae6933de44dd1141cf388e9a48cee3..87df6e1f32e584aa0c6ae21856299fff31d67669 100644
- --- a/src/env.h
- +++ b/src/env.h
- @@ -787,6 +787,7 @@ class Environment : public MemoryRetainer {
- inline bool tracks_unmanaged_fds() const;
- inline bool hide_console_windows() const;
- inline bool no_global_search_paths() const;
- + inline bool should_start_debug_signal_handler() const;
- inline bool no_browser_globals() const;
- inline uint64_t thread_id() const;
- inline worker::Worker* worker_context() const;
- diff --git a/src/inspector_agent.cc b/src/inspector_agent.cc
- index f0b4cc43c864aee1fab8e073ea110ea108c653ab..6d12e27b955fb9fddab24d846e563c969bb48ae7 100644
- --- a/src/inspector_agent.cc
- +++ b/src/inspector_agent.cc
- @@ -707,8 +707,10 @@ bool Agent::Start(const std::string& path,
- StartIoThreadAsyncCallback));
- uv_unref(reinterpret_cast<uv_handle_t*>(&start_io_thread_async));
- start_io_thread_async.data = this;
- - // Ignore failure, SIGUSR1 won't work, but that should not block node start.
- - StartDebugSignalHandler();
- + if (parent_env_->should_start_debug_signal_handler()) {
- + // Ignore failure, SIGUSR1 won't work, but that should not block node start.
- + StartDebugSignalHandler();
- + }
-
- parent_env_->AddCleanupHook([](void* data) {
- Environment* env = static_cast<Environment*>(data);
- diff --git a/src/node.h b/src/node.h
- index dcce529664e1d126115545d6ba7f5b8492b0e921..99d2e1384df4000d4e1f1ffeafa83d29a152054b 100644
- --- a/src/node.h
- +++ b/src/node.h
- @@ -654,7 +654,11 @@ enum Flags : uint64_t {
- // This control is needed by embedders who may not want to initialize the V8
- // inspector in situations where one has already been created,
- // e.g. Blink's in Chromium.
- - kNoCreateInspector = 1 << 9
- + kNoCreateInspector = 1 << 9,
- + // Controls where or not the InspectorAgent for this Environment should
- + // call StartDebugSignalHandler. This control is needed by embedders who may
- + // not want to allow other processes to start the V8 inspector.
- + kNoStartDebugSignalHandler = 1 << 10
- };
- } // namespace EnvironmentFlags
-
|