Explorar o código

Do not try to double-aquire lock when rotating keys. May fix deadlock bug found by weasel.

svn:r3616
Nick Mathewson %!s(int64=20) %!d(string=hai) anos
pai
achega
58540dde50
Modificáronse 1 ficheiros con 4 adicións e 2 borrados
  1. 4 2
      src/or/router.c

+ 4 - 2
src/or/router.c

@@ -129,13 +129,15 @@ void rotate_onion_key(void)
     log(LOG_ERR, "Couldn't write generated key to %s.", fname);
     log(LOG_ERR, "Couldn't write generated key to %s.", fname);
     goto error;
     goto error;
   }
   }
+  log_fn(LOG_INFO, "Rotating onion key");
   tor_mutex_acquire(key_lock);
   tor_mutex_acquire(key_lock);
   if (lastonionkey)
   if (lastonionkey)
     crypto_free_pk_env(lastonionkey);
     crypto_free_pk_env(lastonionkey);
-  log_fn(LOG_INFO, "Rotating onion key");
   lastonionkey = onionkey;
   lastonionkey = onionkey;
-  set_onion_key(prkey);
+  onionkey = prkey;
+  onionkey_set_at = time(NULL);
   tor_mutex_release(key_lock);
   tor_mutex_release(key_lock);
+  mark_my_descriptor_dirty();
   return;
   return;
  error:
  error:
   log_fn(LOG_WARN, "Couldn't rotate onion key.");
   log_fn(LOG_WARN, "Couldn't rotate onion key.");