Browse Source

Merge branch 'bug3263'

Nick Mathewson 13 years ago
parent
commit
6b670d6032
3 changed files with 11 additions and 1 deletions
  1. 4 0
      changes/bug3263
  2. 2 1
      src/or/config.c
  3. 5 0
      src/or/router.c

+ 4 - 0
changes/bug3263

@@ -0,0 +1,4 @@
+  o Minor bugfixes:
+    - Don't publish a new relay descriptor when we reload our onion key,
+      unless the onion key has actually changed. Fixes bug 3263 and
+      resolves another cause of bug 1810. Bugfix on 0.1.1.11-alpha.

+ 2 - 1
src/or/config.c

@@ -3980,7 +3980,8 @@ options_transition_affects_descriptor(const or_options_t *old_options,
       !opt_streq(old_options->ContactInfo, new_options->ContactInfo) ||
       !opt_streq(old_options->MyFamily, new_options->MyFamily) ||
       !opt_streq(old_options->AccountingStart, new_options->AccountingStart) ||
-      old_options->AccountingMax != new_options->AccountingMax)
+      old_options->AccountingMax != new_options->AccountingMax ||
+      public_server_mode(old_options) != public_server_mode(new_options))
     return 1;
 
   return 0;

+ 5 - 0
src/or/router.c

@@ -84,6 +84,11 @@ static authority_cert_t *legacy_key_certificate = NULL;
 static void
 set_onion_key(crypto_pk_env_t *k)
 {
+  if (onionkey && !crypto_pk_cmp_keys(onionkey, k)) {
+    /* k is already our onion key; free it and return */
+    crypto_free_pk_env(k);
+    return;
+  }
   tor_mutex_acquire(key_lock);
   crypto_free_pk_env(onionkey);
   onionkey = k;