mirror of https://github.com/electron/electron
70 lines
3.2 KiB
Diff
70 lines
3.2 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Samuel Attard <samuel.r.attard@gmail.com>
|
|
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 022f1507ce6a72d0ef140409efba476c7ef7825a..ac4295f495e240331a183b4a0a22d7437fc85271 100644
|
|
--- a/src/env-inl.h
|
|
+++ b/src/env-inl.h
|
|
@@ -669,6 +669,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 bb84f5ab43cb5be42019921e5dc2fc010d7b9018..f0a1d5ef2b45d4c27c5660177c9805acee19e5f2 100644
|
|
--- a/src/env.h
|
|
+++ b/src/env.h
|
|
@@ -801,6 +801,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 63c8ae14abb3dee3c4a628d1042c2e9e25688806..4e1eb17dd174e18a814fce6b170d75d161937ace 100644
|
|
--- a/src/inspector_agent.cc
|
|
+++ b/src/inspector_agent.cc
|
|
@@ -717,8 +717,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 dbe6aa42075524f66a8f76bb945255f5195359cd..13e29b98d0c91badee41b53c37b4763f73e02e87 100644
|
|
--- a/src/node.h
|
|
+++ b/src/node.h
|
|
@@ -657,7 +657,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
|
|
|