1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-11-11 21:48:50 +01:00

* 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.
This commit is contained in:
David Shaw 2004-01-20 16:09:38 +00:00
parent 9915f6ed78
commit 0fb284ac24
7 changed files with 30 additions and 12 deletions

View 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> 2004-01-19 David Shaw <dshaw@jabberwocky.com>
* sig-check.c (check_key_signature2): Comments. * sig-check.c (check_key_signature2): Comments.

View File

@ -3023,7 +3023,7 @@ main( int argc, char **argv )
case aRebuildKeydbCaches: case aRebuildKeydbCaches:
if (argc) if (argc)
wrong_args ("--rebuild-keydb-caches"); wrong_args ("--rebuild-keydb-caches");
keydb_rebuild_caches (); keydb_rebuild_caches (1);
break; break;
#ifdef ENABLE_CARD_SUPPORT #ifdef ENABLE_CARD_SUPPORT

View File

@ -597,7 +597,7 @@ keydb_locate_writable (KEYDB_HANDLE hd, const char *reserved)
* Rebuild the caches of all key resources. * Rebuild the caches of all key resources.
*/ */
void void
keydb_rebuild_caches (void) keydb_rebuild_caches (int noisy)
{ {
int i, rc; int i, rc;
@ -610,7 +610,7 @@ keydb_rebuild_caches (void)
case KEYDB_RESOURCE_TYPE_NONE: /* ignore */ case KEYDB_RESOURCE_TYPE_NONE: /* ignore */
break; break;
case KEYDB_RESOURCE_TYPE_KEYRING: case KEYDB_RESOURCE_TYPE_KEYRING:
rc = keyring_rebuild_cache (all_resources[i].token); rc = keyring_rebuild_cache (all_resources[i].token,noisy);
if (rc) if (rc)
log_error (_("failed to rebuild keyring cache: %s\n"), log_error (_("failed to rebuild keyring cache: %s\n"),
g10_errstr (rc)); g10_errstr (rc));

View 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_insert_keyblock (KEYDB_HANDLE hd, KBNODE kb);
int keydb_delete_keyblock (KEYDB_HANDLE hd); int keydb_delete_keyblock (KEYDB_HANDLE hd);
int keydb_locate_writable (KEYDB_HANDLE hd, const char *reserved); 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); int keydb_search_reset (KEYDB_HANDLE hd);
#define keydb_search(a,b,c) keydb_search2((a),(b),(c),NULL) #define keydb_search(a,b,c) keydb_search2((a),(b),(c),NULL)
int keydb_search2 (KEYDB_HANDLE hd, KEYDB_SEARCH_DESC *desc, int keydb_search2 (KEYDB_HANDLE hd, KEYDB_SEARCH_DESC *desc,

View File

@ -1310,7 +1310,7 @@ write_keyblock (IOBUF fp, KBNODE keyblock)
* This is only done for the public keyrings. * This is only done for the public keyrings.
*/ */
int int
keyring_rebuild_cache (void *token) keyring_rebuild_cache (void *token,int noisy)
{ {
KEYRING_HANDLE hd; KEYRING_HANDLE hd;
KEYDB_SEARCH_DESC desc; KEYDB_SEARCH_DESC desc;
@ -1356,8 +1356,8 @@ keyring_rebuild_cache (void *token)
if (rc) if (rc)
goto leave; goto leave;
lastresname = resname; lastresname = resname;
if (!opt.quiet) if (noisy && !opt.quiet)
log_info (_("checking keyring `%s'\n"), resname); log_info (_("caching keyring `%s'\n"), resname);
rc = create_tmp_file (resname, &bakfilename, &tmpfilename, &tmpfp); rc = create_tmp_file (resname, &bakfilename, &tmpfilename, &tmpfp);
if (rc) if (rc)
goto leave; goto leave;
@ -1402,8 +1402,8 @@ keyring_rebuild_cache (void *token)
if (rc) if (rc)
goto leave; goto leave;
if ( !(++count % 50) && !opt.quiet) if ( !(++count % 50) && noisy && !opt.quiet)
log_info(_("%lu keys checked so far (%lu signatures)\n"), log_info(_("%lu keys cached so far (%lu signatures)\n"),
count, sigcount ); count, sigcount );
} /* end main loop */ } /* end main loop */
@ -1414,7 +1414,8 @@ keyring_rebuild_cache (void *token)
log_error ("keyring_search failed: %s\n", g10_errstr(rc)); log_error ("keyring_search failed: %s\n", g10_errstr(rc));
goto leave; 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 (tmpfp)
{ {
if (iobuf_close (tmpfp)) if (iobuf_close (tmpfp))

View File

@ -23,7 +23,6 @@
#include "global.h" #include "global.h"
typedef struct keyring_handle *KEYRING_HANDLE; typedef struct keyring_handle *KEYRING_HANDLE;
int keyring_register_filename (const char *fname, int secret, void **ptr); 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_reset (KEYRING_HANDLE hd);
int keyring_search (KEYRING_HANDLE hd, KEYDB_SEARCH_DESC *desc, int keyring_search (KEYRING_HANDLE hd, KEYDB_SEARCH_DESC *desc,
size_t ndesc, size_t *descindex); size_t ndesc, size_t *descindex);
int keyring_rebuild_cache (void *); int keyring_rebuild_cache (void *token,int noisy);
#endif /*GPG_KEYRING_H*/ #endif /*GPG_KEYRING_H*/

View File

@ -1944,6 +1944,13 @@ validate_keys (int interactive)
KeyHashTable stored,used,full_trust; KeyHashTable stored,used,full_trust;
u32 start_time, next_expire; 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 (); start_time = make_timestamp ();
next_expire = 0xffffffff; /* set next expire to the year 2106 */ next_expire = 0xffffffff; /* set next expire to the year 2106 */
stored = new_key_hash_table (); stored = new_key_hash_table ();