* g10.c (main), keydb.h, keydb.c (keydb_rebuild_caches), keyring.h,
authorDavid Shaw <dshaw@jabberwocky.com>
Tue, 20 Jan 2004 16:09:38 +0000 (16:09 +0000)
committerDavid Shaw <dshaw@jabberwocky.com>
Tue, 20 Jan 2004 16:09:38 +0000 (16:09 +0000)
keyring.c (keyring_rebuild_cache): Add "noisy" flag so cache rebuilds can
remain noisy when called for itself, and quiet when called as part of the
trustdb rebuild.

* trustdb.c (validate_keys): Rebuild the sig caches before building the
trustdb.  Note that this is going to require some architectual
re-thinking, as it is agonizingly slow.

g10/ChangeLog
g10/g10.c
g10/keydb.c
g10/keydb.h
g10/keyring.c
g10/keyring.h
g10/trustdb.c

index f6a5c07..75c0d45 100644 (file)
@@ -1,3 +1,14 @@
+2004-01-20  David Shaw  <dshaw@jabberwocky.com>
+
+       * g10.c (main), keydb.h, keydb.c (keydb_rebuild_caches),
+       keyring.h, keyring.c (keyring_rebuild_cache): Add "noisy" flag so
+       cache rebuilds can remain noisy when called for itself, and quiet
+       when called as part of the trustdb rebuild.
+
+       * trustdb.c (validate_keys): Rebuild the sig caches before
+       building the trustdb.  Note that this is going to require some
+       architectual re-thinking, as it is agonizingly slow.
+
 2004-01-19  David Shaw  <dshaw@jabberwocky.com>
 
        * sig-check.c (check_key_signature2): Comments.
index 20d781c..d6d518b 100644 (file)
--- a/g10/g10.c
+++ b/g10/g10.c
@@ -3023,7 +3023,7 @@ main( int argc, char **argv )
       case aRebuildKeydbCaches:
         if (argc)
             wrong_args ("--rebuild-keydb-caches");
-        keydb_rebuild_caches ();
+        keydb_rebuild_caches (1);
         break;
 
 #ifdef ENABLE_CARD_SUPPORT
index c67c361..ab0c146 100644 (file)
@@ -597,7 +597,7 @@ keydb_locate_writable (KEYDB_HANDLE hd, const char *reserved)
  * Rebuild the caches of all key resources.
  */
 void
-keydb_rebuild_caches (void)
+keydb_rebuild_caches (int noisy)
 {
   int i, rc;
   
@@ -610,7 +610,7 @@ keydb_rebuild_caches (void)
         case KEYDB_RESOURCE_TYPE_NONE: /* ignore */
           break;
         case KEYDB_RESOURCE_TYPE_KEYRING:
-          rc = keyring_rebuild_cache (all_resources[i].token);
+          rc = keyring_rebuild_cache (all_resources[i].token,noisy);
           if (rc)
             log_error (_("failed to rebuild keyring cache: %s\n"),
                        g10_errstr (rc));
index 0d2a143..fab9eaa 100644 (file)
@@ -156,7 +156,7 @@ int keydb_update_keyblock (KEYDB_HANDLE hd, KBNODE kb);
 int keydb_insert_keyblock (KEYDB_HANDLE hd, KBNODE kb);
 int keydb_delete_keyblock (KEYDB_HANDLE hd);
 int keydb_locate_writable (KEYDB_HANDLE hd, const char *reserved);
-void keydb_rebuild_caches (void);
+void keydb_rebuild_caches (int noisy);
 int keydb_search_reset (KEYDB_HANDLE hd);
 #define keydb_search(a,b,c) keydb_search2((a),(b),(c),NULL)
 int keydb_search2 (KEYDB_HANDLE hd, KEYDB_SEARCH_DESC *desc,
index bf879df..093bb00 100644 (file)
@@ -1310,7 +1310,7 @@ write_keyblock (IOBUF fp, KBNODE keyblock)
  * This is only done for the public keyrings.
  */
 int
-keyring_rebuild_cache (void *token)
+keyring_rebuild_cache (void *token,int noisy)
 {
   KEYRING_HANDLE hd;
   KEYDB_SEARCH_DESC desc;
@@ -1356,8 +1356,8 @@ keyring_rebuild_cache (void *token)
           if (rc)
             goto leave;
           lastresname = resname;
-          if (!opt.quiet)
-            log_info (_("checking keyring `%s'\n"), resname);
+          if (noisy && !opt.quiet)
+            log_info (_("caching keyring `%s'\n"), resname);
           rc = create_tmp_file (resname, &bakfilename, &tmpfilename, &tmpfp);
           if (rc)
             goto leave;
@@ -1402,8 +1402,8 @@ keyring_rebuild_cache (void *token)
       if (rc)
         goto leave;
 
-      if ( !(++count % 50) && !opt.quiet)
-        log_info(_("%lu keys checked so far (%lu signatures)\n"),
+      if ( !(++count % 50) && noisy && !opt.quiet)
+        log_info(_("%lu keys cached so far (%lu signatures)\n"),
                  count, sigcount );
 
     } /* end main loop */ 
@@ -1414,7 +1414,8 @@ keyring_rebuild_cache (void *token)
       log_error ("keyring_search failed: %s\n", g10_errstr(rc));
       goto leave;
     }
-  log_info(_("%lu keys checked (%lu signatures)\n"), count, sigcount );
+  if(noisy || opt.verbose)
+    log_info(_("%lu keys cached (%lu signatures)\n"), count, sigcount );
   if (tmpfp)
     {
       if (iobuf_close (tmpfp))
index 528557a..9b63f32 100644 (file)
@@ -23,7 +23,6 @@
 
 #include "global.h"
 
-
 typedef struct keyring_handle *KEYRING_HANDLE;
 
 int keyring_register_filename (const char *fname, int secret, void **ptr);
@@ -41,6 +40,6 @@ int keyring_delete_keyblock (KEYRING_HANDLE hd);
 int keyring_search_reset (KEYRING_HANDLE hd);
 int keyring_search (KEYRING_HANDLE hd, KEYDB_SEARCH_DESC *desc,
                    size_t ndesc, size_t *descindex);
-int keyring_rebuild_cache (void *);
+int keyring_rebuild_cache (void *token,int noisy);
 
 #endif /*GPG_KEYRING_H*/
index 95d8c38..84212a3 100644 (file)
@@ -1944,6 +1944,13 @@ validate_keys (int interactive)
   KeyHashTable stored,used,full_trust;
   u32 start_time, next_expire;
 
+  /* Make sure we have all sigs cached.  TODO: This is going to
+     require some architectual re-thinking, as it is agonizingly slow.
+     Perhaps combine this with reset_trust_records(), or only check
+     the caches on keys that are actually involved in the web of
+     trust. */
+  keydb_rebuild_caches(0);
+
   start_time = make_timestamp ();
   next_expire = 0xffffffff; /* set next expire to the year 2106 */
   stored = new_key_hash_table ();