Browse Source

Don't crash on startup of a dormant relay

If a relay is dormant at startup, it will call init_keys before
crypto_set_tls_dh_prime.  This is bad.  Let's make it not so bad, because
someday it *will* happen again.
Robert Ransom 12 years ago
parent
commit
d688a40a0e
2 changed files with 11 additions and 2 deletions
  1. 6 0
      changes/bug4702
  2. 5 2
      src/common/crypto.c

+ 6 - 0
changes/bug4702

@@ -0,0 +1,6 @@
+  o Minor bugfixes:
+
+    - Fix an assertion failure when a relay with accounting enabled
+      starts up while dormant.  Fixes bug 4702; bugfix on
+      0.2.3.9-alpha.
+

+ 5 - 2
src/common/crypto.c

@@ -2089,8 +2089,11 @@ init_dh_param(void)
   dh_param_p = circuit_dh_prime;
   dh_param_g = generator;
 
-  /* Should be already set by config.c. */
-  tor_assert(dh_param_p_tls);
+  /* Ensure that we have TLS DH parameters set up, too, even if we're
+     going to change them soon. */
+  if (!dh_param_p_tls) {
+    crypto_set_tls_dh_prime(NULL);
+  }
 }
 
 /** Number of bits to use when choosing the x or y value in a Diffie-Hellman