Skip to content

Commit

Permalink
add --report-disable-network option
Browse files Browse the repository at this point in the history
  • Loading branch information
Ethan-Arrowood committed Feb 2, 2024
1 parent 68885d5 commit eb88c21
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 5 deletions.
7 changes: 7 additions & 0 deletions lib/internal/process/report.js
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,13 @@ const report = {
validateBoolean(b, 'compact');
nr.setCompact(b);
},
get disableNetwork() {
return nr.getDisableNetwork();
},
set disableNetwork(b) {
validateBoolean(b, 'disableNetwork');
nr.setDisableNetwork(b);
},
get signal() {
return nr.getSignal();
},
Expand Down
5 changes: 5 additions & 0 deletions src/node_options.cc
Original file line number Diff line number Diff line change
Expand Up @@ -950,6 +950,11 @@ PerProcessOptionsParser::PerProcessOptionsParser(
"generate diagnostic report on fatal (internal) errors",
&PerProcessOptions::report_on_fatalerror,
kAllowedInEnvvar);
AddOption("--report-disable-network",
"disable network interface diagnostics."
" (default: false)",
&PerProcessOptions::report_disable_network,
kAllowedInEnvvar);

#ifdef NODE_HAVE_I18N_SUPPORT
AddOption("--icu-data-dir",
Expand Down
1 change: 1 addition & 0 deletions src/node_options.h
Original file line number Diff line number Diff line change
Expand Up @@ -306,6 +306,7 @@ class PerProcessOptions : public Options {
bool report_compact = false;
std::string report_directory;
std::string report_filename;
bool report_disable_network = false;

// TODO(addaleax): Some of these could probably be per-Environment.
std::string use_largepages = "off";
Expand Down
28 changes: 23 additions & 5 deletions src/node_report.cc
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,8 @@ static void WriteNodeReport(Isolate* isolate,
const std::string& filename,
std::ostream& out,
Local<Value> error,
bool compact);
bool compact,
bool disable_network);
static void PrintVersionInformation(JSONWriter* writer);
static void PrintJavaScriptErrorStack(JSONWriter* writer,
Isolate* isolate,
Expand Down Expand Up @@ -93,7 +94,8 @@ static void WriteNodeReport(Isolate* isolate,
const std::string& filename,
std::ostream& out,
Local<Value> error,
bool compact) {
bool compact,
bool disable_network) {
// Obtain the current time and the pid.
TIME_TYPE tm_struct;
DiagnosticFilename::LocalTime(&tm_struct);
Expand Down Expand Up @@ -917,8 +919,14 @@ std::string TriggerNodeReport(Isolate* isolate,
compact = per_process::cli_options->report_compact;
}

bool disable_network;
{
Mutex::ScopedLock lock(per_process::cli_options_mutex);
disable_network = per_process::cli_options->report_disable_network;
}

report::WriteNodeReport(
isolate, env, message, trigger, filename, *outstream, error, compact);
isolate, env, message, trigger, filename, *outstream, error, compact, disable_network);

// Do not close stdout/stderr, only close files we opened.
if (outfile.is_open()) {
Expand Down Expand Up @@ -969,8 +977,13 @@ void GetNodeReport(Isolate* isolate,
if (isolate != nullptr) {
env = Environment::GetCurrent(isolate);
}
bool disable_network;
{
Mutex::ScopedLock lock(per_process::cli_options_mutex);
disable_network = per_process::cli_options->report_disable_network;
}
report::WriteNodeReport(
isolate, env, message, trigger, "", out, error, false);
isolate, env, message, trigger, "", out, error, false, disable_network);
}

// External function to trigger a report, writing to a supplied stream.
Expand All @@ -983,8 +996,13 @@ void GetNodeReport(Environment* env,
if (env != nullptr) {
isolate = env->isolate();
}
bool disable_network;
{
Mutex::ScopedLock lock(per_process::cli_options_mutex);
disable_network = per_process::cli_options->report_disable_network;
}
report::WriteNodeReport(
isolate, env, message, trigger, "", out, error, false);
isolate, env, message, trigger, "", out, error, false, disable_network);
}

} // namespace node
17 changes: 17 additions & 0 deletions src/node_report_module.cc
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,19 @@ static void SetCompact(const FunctionCallbackInfo<Value>& info) {
per_process::cli_options->report_compact = compact;
}

static void GetDisableNetwork(const FunctionCallbackInfo<Value>& info) {
Mutex::ScopedLock lock(per_process::cli_options_mutex);
info.GetReturnValue().Set(per_process::cli_options->report_disable_network);
}

static void SetDisableNetwork(const FunctionCallbackInfo<Value>& info) {
Mutex::ScopedLock lock(per_process::cli_options_mutex);
Environment* env = Environment::GetCurrent(info);
Isolate* isolate = env->isolate();
bool disable_network = info[0]->ToBoolean(isolate)->Value();
per_process::cli_options->report_disable_network = disable_network;
}

static void GetDirectory(const FunctionCallbackInfo<Value>& info) {
Mutex::ScopedLock lock(per_process::cli_options_mutex);
Environment* env = Environment::GetCurrent(info);
Expand Down Expand Up @@ -174,6 +187,8 @@ static void Initialize(Local<Object> exports,
SetMethod(context, exports, "getReport", GetReport);
SetMethod(context, exports, "getCompact", GetCompact);
SetMethod(context, exports, "setCompact", SetCompact);
SetMethod(context, exports, "getDisableNetwork", GetDisableNetwork);
SetMethod(context, exports, "setDisableNetwork", SetDisableNetwork);
SetMethod(context, exports, "getDirectory", GetDirectory);
SetMethod(context, exports, "setDirectory", SetDirectory);
SetMethod(context, exports, "getFilename", GetFilename);
Expand All @@ -200,6 +215,8 @@ void RegisterExternalReferences(ExternalReferenceRegistry* registry) {
registry->Register(GetReport);
registry->Register(GetCompact);
registry->Register(SetCompact);
registry->Register(GetDisableNetwork);
registry->Register(SetDisableNetwork);
registry->Register(GetDirectory);
registry->Register(SetDirectory);
registry->Register(GetFilename);
Expand Down

0 comments on commit eb88c21

Please sign in to comment.