Commit 20f802ea authored by Nick Mathewson's avatar Nick Mathewson 🤹
Browse files

Add an option to disable signal handler installation.

Closes ticket 24588.
parent fdd57348
Loading
Loading
Loading
Loading

changes/ticket24588

0 → 100644
+5 −0
Original line number Diff line number Diff line
  o Minor features (embedding, mobile):
    - Applications that want to embed Tor can now tell Tor not to register
      any of its own POSIX signal handlers, using the __DisableSignalHandlers
      option. This option is not meant for general use. Closes ticket 24588.
+7 −0
Original line number Diff line number Diff line
@@ -564,6 +564,7 @@ static config_var_t option_vars_[] = {
  VAR("__ReloadTorrcOnSIGHUP",   BOOL,  ReloadTorrcOnSIGHUP,      "1"),
  VAR("__AllDirActionsPrivate",  BOOL,  AllDirActionsPrivate,     "0"),
  VAR("__DisablePredictedCircuits",BOOL,DisablePredictedCircuits, "0"),
  VAR("__DisableSignalHandlers", BOOL,  DisableSignalHandlers,    "0"),
  VAR("__LeaveStreamsUnattached",BOOL,  LeaveStreamsUnattached,   "0"),
  VAR("__HashedControlSessionPassword", LINELIST, HashedControlSessionPassword,
      NULL),
@@ -4652,6 +4653,12 @@ options_transition_allowed(const or_options_t *old,
    return -1;
  }

  if (old->DisableSignalHandlers != new_val->DisableSignalHandlers) {
    *msg = tor_strdup("While Tor is running, changing DisableSignalHandlers "
                      "is not allowed.");
    return -1;
  }

  if (strcmp(old->DataDirectory,new_val->DataDirectory)!=0) {
    tor_asprintf(msg,
               "While Tor is running, changing DataDirectory "
+3 −1
Original line number Diff line number Diff line
@@ -3057,8 +3057,10 @@ void
handle_signals(void)
{
  int i;
  const int enabled = !get_options()->DisableSignalHandlers;

  for (i = 0; signal_handlers[i].signal_value >= 0; ++i) {
    if (signal_handlers[i].try_to_register) {
    if (enabled && signal_handlers[i].try_to_register) {
      signal_handlers[i].signal_event =
        tor_evsignal_new(tor_libevent_get_base(),
                         signal_handlers[i].signal_value,
+5 −0
Original line number Diff line number Diff line
@@ -4651,6 +4651,11 @@ typedef struct {

  /** List of files that were opened by %include in torrc and torrc-defaults */
  smartlist_t *FilesOpenedByIncludes;

  /** If true, Tor shouldn't install any posix signal handlers, since it is
   * running embedded inside another process.
   */
  int DisableSignalHandlers;
} or_options_t;

#define LOG_PROTOCOL_WARN (get_protocol_warning_severity_level())