diff options
Diffstat (limited to '')
-rw-r--r-- | g10/getkey.c | 42 |
1 files changed, 37 insertions, 5 deletions
diff --git a/g10/getkey.c b/g10/getkey.c index 65c0ae495..f31529910 100644 --- a/g10/getkey.c +++ b/g10/getkey.c @@ -1,14 +1,14 @@ /* getkey.c - Get a key from the database * Copyright (C) 1998 Free Software Foundation, Inc. * - * This file is part of GNUPG. + * This file is part of GnuPG. * - * GNUPG is free software; you can redistribute it and/or modify + * GnuPG is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * - * GNUPG is distributed in the hope that it will be useful, + * GnuPG is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. @@ -160,7 +160,7 @@ cache_public_key( PKT_public_key *pk ) if( pk_cache_entries >= MAX_PK_CACHE_ENTRIES ) { /* fixme: use another algorithm to free some cache slots */ pk_cache_disabled=1; - if( opt.verbose ) + if( opt.verbose > 1 ) log_info(_("too many entries in pk cache - disabled\n")); return; } @@ -208,6 +208,38 @@ cache_user_id( PKT_user_id *uid, u32 *keyid ) } +void +getkey_disable_caches() +{ + #if MAX_UNK_CACHE_ENTRIES + { + keyid_list_t kl, kl2; + for( kl = unknown_keyids; kl; kl = kl2 ) { + kl2 = kl->next; + m_free(kl); + } + unknown_keyids = NULL; + unk_cache_disabled = 1; + } + #endif + #if MAX_PK_CACHE_ENTRIES + { + pk_cache_entry_t ce, ce2; + u32 keyid[2]; + + for( ce = pk_cache; ce; ce = ce2 ) { + ce2 = ce->next; + free_public_key( ce->pk ); + m_free( ce ); + } + pk_cache_disabled=1; + pk_cache_entries = 0; + pk_cache = NULL; + } + #endif + /* fixme: disable user id cache ? */ +} + /**************** * Get a public key and store it into the allocated pk @@ -259,7 +291,7 @@ get_pubkey( PKT_public_key *pk, u32 *keyid ) ; else if( ++unk_cache_entries > MAX_UNK_CACHE_ENTRIES ) { unk_cache_disabled = 1; - if( opt.verbose ) + if( opt.verbose > 1 ) log_info(_("too many entries in unk cache - disabled\n")); } else { |