diff options
Diffstat (limited to '')
-rw-r--r-- | g10/export.c | 2 | ||||
-rw-r--r-- | g10/keydb.c | 3 | ||||
-rw-r--r-- | g10/keyserver.c | 3 |
3 files changed, 7 insertions, 1 deletions
diff --git a/g10/export.c b/g10/export.c index a92eace12..b65fb8d06 100644 --- a/g10/export.c +++ b/g10/export.c @@ -804,6 +804,8 @@ do_export_stream (ctrl_t ctrl, iobuf_t out, strlist_t users, int secret, sl->d, gpg_strerror (err)); } + keydb_disable_caching (kdbhd); /* We are looping the search. */ + /* It would be nice to see which of the given users did actually match one in the keyring. To implement this we need to have a found flag for each entry in desc. To set this flag we diff --git a/g10/keydb.c b/g10/keydb.c index bafae18a1..a578c7cb7 100644 --- a/g10/keydb.c +++ b/g10/keydb.c @@ -1424,6 +1424,9 @@ keydb_search (KEYDB_HANDLE hd, KEYDB_SEARCH_DESC *desc, if (DBG_CACHE) dump_search_desc (hd, "keydb_search", desc, ndesc); + /* NB: If one of the exact search modes below is used in a loop to + walk over all keys (with the same fingerprint) the caching must + have been disabled for the handle. */ if (!hd->no_caching && ndesc == 1 && (desc[0].mode == KEYDB_SEARCH_MODE_FPR20 diff --git a/g10/keyserver.c b/g10/keyserver.c index 5bc1eba83..e3ad70743 100644 --- a/g10/keyserver.c +++ b/g10/keyserver.c @@ -1229,7 +1229,8 @@ keyidlist(strlist_t users,KEYDB_SEARCH_DESC **klist,int *count,int fakev3) *klist=xmalloc(sizeof(KEYDB_SEARCH_DESC)*num); - kdbhd=keydb_new (); + kdbhd = keydb_new (); + keydb_disable_caching (kdbhd); /* We are looping the search. */ if(!users) { |