Переглянути джерело

Log cached-at-exit exit policies to try to fix bug 672.

svn:r18827
Nick Mathewson 15 роки тому
батько
коміт
d40cbda2cd
1 змінених файлів з 17 додано та 2 видалено
  1. 17 2
      src/or/policies.c

+ 17 - 2
src/or/policies.c

@@ -1316,8 +1316,23 @@ policies_free_all(void)
   addr_policy_list_free(authdir_badexit_policy);
   authdir_badexit_policy = NULL;
 
-  if (!HT_EMPTY(&policy_root))
-    log_warn(LD_MM, "Still had some address policies cached at shutdown.");
+  if (!HT_EMPTY(&policy_root)) {
+    policy_map_ent_t **ent;
+    int n = 0;
+    char buf[POLICY_BUF_LEN];
+
+    log_warn(LD_MM, "Still had %d address policies cached at shutdown.",
+             (int)HT_SIZE(&policy_root));
+
+    /* Note the first 10 cached policies to try to figure out where they
+     * might be coming from. */
+    HT_FOREACH(ent, policy_map, &policy_root) {
+      if (++n > 10)
+        break;
+      if (policy_write_item(buf, sizeof(buf), (*ent)->policy, 0) >= 0)
+        log_warn(LD_MM,"  %d [%d]: %s", n, (*ent)->policy->refcnt, buf);
+    }
+  }
   HT_CLEAR(policy_map, &policy_root);
 }