1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-12-22 10:19:57 +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>
* sig-check.c (check_key_signature2): Comments.

View File

@ -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

View 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));

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_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,

View 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))

View 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*/

View 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 ();