From 241971fac0fc52efc87ed5753a01d18b0672d900 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Wed, 2 Oct 2024 16:44:04 +0200 Subject: gpgsm: Implement a cache for the KEYINFO queries. * sm/gpgsm.h (struct keyinfo_cache_item_s): New. (struct server_control_s): Add keyinfo_cache and keyinfo_cache_valid. * sm/call-agent.c (keyinfo_cache_disabled): New flag. (release_a_keyinfo_cache): New. (gpgsm_flush_keyinfo_cache): New. (struct keyinfo_status_parm_s): New. (keyinfo_status_cb): Implement a fill mode. (gpgsm_agent_keyinfo): Implement a cache. * sm/server.c (reset_notify): Flush the cache. * sm/gpgsm.c (gpgsm_deinit_default_ctrl): Ditto. -- In almost all cases we have just a few private keys in the agent and thus it is better to fetch them early. This does not work in a restricted connection but we take care and disable the cache in this case. This cache gives a a minor speed up. GnuPG-bug-id: 7308 --- sm/server.c | 1 + 1 file changed, 1 insertion(+) (limited to 'sm/server.c') diff --git a/sm/server.c b/sm/server.c index f00b70d38..cb3fae24d 100644 --- a/sm/server.c +++ b/sm/server.c @@ -327,6 +327,7 @@ reset_notify (assuan_context_t ctx, char *line) (void) line; + gpgsm_flush_keyinfo_cache (ctrl); gpgsm_release_certlist (ctrl->server_local->recplist); gpgsm_release_certlist (ctrl->server_local->signerlist); ctrl->server_local->recplist = NULL; -- cgit v1.2.3