fetching certs for legacy keys?

Ian complaints at http://archives.seul.org/or/dev/Dec-2010/msg00001.html that Tor 0.2.3.x sees:

Dec 02 08:13:06.000 [notice] We're missing a certificate from authority with signing key F7C7B9191C74C0BA07363C84D37BBAD3A8A6C6D8: launching request.
Dec 02 08:13:06.000 [notice] We're missing a certificate from authority with signing key 604834622B54F2D9BA39B34AC53924546733AA60: launching request.

Our friend boboper posts a suggested fix at http://pastebin.com/raw.php?i=QFXB1Phb which I reproduce here:

--- dirserv.h.orig	Wed Dec 15 04:32:04 2010
+++ dirserv.h	Thu Dec 16 08:03:54 2010
@@ -64,6 +64,7 @@
 int directory_fetches_dir_info_later(or_options_t *options);
 int directory_caches_v2_dir_info(or_options_t *options);
 #define directory_caches_v1_dir_info(o) directory_caches_v2_dir_info(o)
+int directory_caches_distribute_dir_info(or_options_t *options);
 int directory_caches_dir_info(or_options_t *options);
 int directory_permits_begindir_requests(or_options_t *options);
 int directory_permits_controller_requests(or_options_t *options);

--- dirserv.c.orig	Wed Dec 15 04:32:04 2010
+++ dirserv.c	Thu Dec 16 08:06:28 2010
@@ -1237,9 +1237,18 @@
  * and we're willing to serve them to others. Else return 0.
  */
 int
+directory_caches_distribute_dir_info(or_options_t *options)
+{
+  return options->BridgeRelay != 0 || options->DirPort != 0;
+}
+
+/** Return 1 if we want to keep descriptors, networkstatuses, etc around
+ * for themself or we're willing to serve them to others. Else return 0.
+ */
+int
 directory_caches_dir_info(or_options_t *options)
 {
-  if (options->BridgeRelay || options->DirPort)
+  if (directory_caches_distribute_dir_info(options)) /* distribute stuff */
     return 1;
   if (!server_mode(options) || !advertised_server_mode())
     return 0;

--- routerlist.c.orig	Wed Dec 15 04:32:04 2010
+++ routerlist.c	Thu Dec 16 08:03:30 2010
@@ -227,7 +227,7 @@
                "signing key %s", from_store ? "cached" : "downloaded",
                ds->nickname, hex_str(cert->signing_key_digest,DIGEST_LEN));
     } else {
-      int adding = directory_caches_dir_info(get_options());
+      int adding = directory_caches_distribute_dir_info(get_options());
       log_info(LD_DIR, "%s %s certificate for unrecognized directory "
                "authority with signing key %s",
                adding ? "Adding" : "Not adding",
@@ -478,7 +478,7 @@
   smartlist_t *missing_digests;
   char *resource = NULL;
   cert_list_t *cl;
-  const int cache = directory_caches_dir_info(get_options());
+  const int cache = directory_caches_distribute_dir_info(get_options());
 
   if (should_delay_dir_fetches(get_options()))
     return;