]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
start the cpuworkers always, even for clients
authorRoger Dingledine <arma@torproject.org>
Sun, 4 Sep 2022 04:48:42 +0000 (00:48 -0400)
committerMicah Elizabeth Scott <beth@torproject.org>
Wed, 10 May 2023 14:37:11 +0000 (07:37 -0700)
prepares the way for client-side pow cpuworkers

also happens to resolve bug https://bugs.torproject.org/tpo/core/tor/40617
(which went into 0.4.7.4-alpha) because now we survive initing the
cpuworker subsystem when we're not a relay.

src/app/main/main.c
src/core/crypto/onion_crypto.c
src/core/mainloop/cpuworker.c
src/core/mainloop/cpuworker.h
src/feature/relay/relay_config.c

index 838e129d0431d21ffabe16289c4f07b5152aae1e..a50a0aad6f7e48e627b1aae4dfdb7094ff36a7bd 100644 (file)
@@ -1237,10 +1237,10 @@ run_tor_main_loop(void)
   const time_t now = time(NULL);
   directory_info_has_arrived(now, 1, 0);
 
-  if (server_mode(get_options()) || dir_server_mode(get_options())) {
-    /* launch cpuworkers. Need to do this *after* we've read the onion key. */
-    cpu_init();
-  }
+  /* launch cpuworkers. Need to do this *after* we've read the onion key. */
+  /* launch them always for all tors, now that clients can solve onion PoWs. */
+  cpuworker_init();
+
   consdiffmgr_enable_background_compression();
 
   /* Setup shared random protocol subsystem. */
index 81e4e1b0788cc3b678217d6b87e18e0103978620..0839d8903f17d707a45df22f13be5234e4ca61fa 100644 (file)
@@ -64,6 +64,9 @@ static const size_t NTOR3_CIRC_VERIFICATION_LEN = 14;
 server_onion_keys_t *
 server_onion_keys_new(void)
 {
+  if (!get_master_identity_key())
+    return NULL;
+
   server_onion_keys_t *keys = tor_malloc_zero(sizeof(server_onion_keys_t));
   memcpy(keys->my_identity, router_get_my_id_digest(), DIGEST_LEN);
   ed25519_pubkey_copy(&keys->my_ed_identity, get_master_identity_key());
index 9ad8939e4d4c535244c0565d5d9d33288952aa84..4a22790b4492a72afd96105d86698c484ba5502b 100644 (file)
@@ -117,7 +117,7 @@ cpuworker_consensus_has_changed(const networkstatus_t *ns)
  * during Tor's lifetime.
  */
 void
-cpu_init(void)
+cpuworker_init(void)
 {
   if (!replyqueue) {
     replyqueue = replyqueue_new(0);
index 9eee287c1f55d80491438aae28a483cb7bd7b417..7821f5612f4eb8ed0687f0c3c1821561f94415fc 100644 (file)
@@ -12,9 +12,7 @@
 #ifndef TOR_CPUWORKER_H
 #define TOR_CPUWORKER_H
 
-#include "feature/nodelist/networkstatus_st.h"
-
-void cpu_init(void);
+void cpuworker_init(void);
 void cpuworkers_rotate_keyinfo(void);
 
 void cpuworker_consensus_has_changed(const networkstatus_t *ns);
index aa9d48beac2e2d98cb65e73e071f7c49af5687c3..553b269ecf0a27fd8372be42cea3fbbc9d9f9b5c 100644 (file)
@@ -1327,12 +1327,6 @@ options_act_relay(const or_options_t *old_options)
                "Worker-related options changed. Rotating workers.");
       const int server_mode_turned_on =
         server_mode(options) && !server_mode(old_options);
-      const int dir_server_mode_turned_on =
-        dir_server_mode(options) && !dir_server_mode(old_options);
-
-      if (server_mode_turned_on || dir_server_mode_turned_on) {
-        cpu_init();
-      }
 
       if (server_mode_turned_on) {
         ip_address_changed(0);