|
@@ -699,16 +699,25 @@ router_parse_list_from_string(const char **s, smartlist_t *dest,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-void dump_distinct_digests_xx(int severity);
|
|
|
-static digestmap_t *verified_digests_tmp = NULL; // XXXX0124 remove me.
|
|
|
-// remove me too.
|
|
|
+/* For debugging: define to count every descriptor digest we've seen so we
|
|
|
+ * know if we need to try harder to avoid duplicate verifies. */
|
|
|
+#undef COUNT_DISTINCT_DIGESTS
|
|
|
+
|
|
|
+#ifdef COUNT_DISTINCT_DIGESTS
|
|
|
+static digestmap_t *verified_digests = NULL;
|
|
|
+#endif
|
|
|
+
|
|
|
void
|
|
|
-dump_distinct_digests_xx(int severity)
|
|
|
+dump_distinct_digest_count(int severity)
|
|
|
{
|
|
|
- if (!verified_digests_tmp)
|
|
|
- verified_digests_tmp = digestmap_new();
|
|
|
+#ifdef COUNT_DISTINCT_DIGESTS
|
|
|
+ if (!verified_digests)
|
|
|
+ verified_digests = digestmap_new();
|
|
|
log(severity, LD_GENERAL, "%d *distinct* router digests verified",
|
|
|
- digestmap_size(verified_digests_tmp));
|
|
|
+ digestmap_size(verified_digests));
|
|
|
+#else
|
|
|
+ (void)severity; /* suppress "unused parameter" warning */
|
|
|
+#endif
|
|
|
}
|
|
|
|
|
|
/** Helper function: reads a single router entry from *<b>s</b> ...
|
|
@@ -925,9 +934,11 @@ router_parse_entry_from_string(const char *s, const char *end,
|
|
|
goto err;
|
|
|
}
|
|
|
note_crypto_pk_op(VERIFY_RTR);
|
|
|
- if (!verified_digests_tmp)
|
|
|
- verified_digests_tmp = digestmap_new();
|
|
|
- digestmap_set(verified_digests_tmp, signed_digest, (void*)(uintptr_t)1);
|
|
|
+#ifdef COUNT_DISTINCT_DIGESTS
|
|
|
+ if (!verified_digests)
|
|
|
+ verified_digests = digestmap_new();
|
|
|
+ digestmap_set(verified_digests, signed_digest, (void*)(uintptr_t)1);
|
|
|
+#endif
|
|
|
if ((t=crypto_pk_public_checksig(router->identity_pkey, signed_digest,
|
|
|
tok->object_body, 128)) != 20) {
|
|
|
log_warn(LD_DIR, "Invalid signature %d",t);
|