Ver código fonte

Make --hash-password not craash on exit.

svn:r5243
Nick Mathewson 20 anos atrás
pai
commit
905ef987e2
3 arquivos alterados com 25 adições e 10 exclusões
  1. 5 3
      src/or/circuitbuild.c
  2. 12 4
      src/or/config.c
  3. 8 3
      src/or/connection_edge.c

+ 5 - 3
src/or/circuitbuild.c

@@ -1677,9 +1677,11 @@ void
 helper_nodes_free_all(void)
 {
   /* Don't call clear_helper_nodes(); that will flush our state change to disk */
-  SMARTLIST_FOREACH(helper_nodes, helper_node_t *, h, tor_free(h));
-  smartlist_free(helper_nodes);
-  helper_nodes = NULL;
+  if (helper_nodes) {
+    SMARTLIST_FOREACH(helper_nodes, helper_node_t *, h, tor_free(h));
+    smartlist_free(helper_nodes);
+    helper_nodes = NULL;
+  }
 }
 
 /** How long (in seconds) do we allow a helper node to be nonfunctional before

+ 12 - 4
src/or/config.c

@@ -394,11 +394,19 @@ set_options(or_options_t *new_val)
 void
 config_free_all(void)
 {
-  config_free(&options_format, global_options);
-  config_free(&state_format, global_state);
+  if (global_options) {
+    config_free(&options_format, global_options);
+    global_options = NULL;
+  }
+  if (global_state) {
+    config_free(&state_format, global_state);
+    global_state = NULL;
+  }
   tor_free(torrc_fname);
-  addr_policy_free(reachable_addr_policy);
-  reachable_addr_policy = NULL;
+  if (reachable_addr_policy) {
+    addr_policy_free(reachable_addr_policy);
+    reachable_addr_policy = NULL;
+  }
 }
 
 /** If options->SafeLogging is on, return a not very useful string,

+ 8 - 3
src/or/connection_edge.c

@@ -556,9 +556,14 @@ addressmap_clean(time_t now)
 void
 addressmap_free_all(void)
 {
-  strmap_free(addressmap, addressmap_ent_free);
-  addressmap = NULL;
-  strmap_free(virtaddress_reversemap, addressmap_virtaddress_ent_free);
+  if (addressmap) {
+    strmap_free(addressmap, addressmap_ent_free);
+    addressmap = NULL;
+  }
+  if (virtaddress_reversemap) {
+    strmap_free(virtaddress_reversemap, addressmap_virtaddress_ent_free);
+    virtaddress_reversemap = NULL;
+  }
 }
 
 /** Look at address, and rewrite it until it doesn't want any