aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2025-05-09 02:30:23 +0000
committerNIIBE Yutaka <[email protected]>2025-05-13 00:03:09 +0000
commit5fb338168ed626a6fc882ccd298288f5b121aa4d (patch)
tree9ef4d5534ef62d62824d4ab40a3d4c98037ee358
parentgpg: Fully implement the group key flag. (diff)
downloadgnupg-5fb338168ed626a6fc882ccd298288f5b121aa4d.tar.gz
gnupg-5fb338168ed626a6fc882ccd298288f5b121aa4d.zip
agent: Recover the old behavior with max-cache-ttl=0.
* agent/cache.c (compute_expiration): Expire newly created entry when max-cache-ttl is zero. -- Fixes-commit: 92de0387f04b1e87a4a49ed063323624f25ac3ef GnuPG-bug-id: 6681 Suggested-by: Lucas Mulling <[email protected]> Signed-off-by: NIIBE Yutaka <[email protected]>
-rw-r--r--agent/cache.c42
-rw-r--r--doc/gpg-agent.texi5
2 files changed, 20 insertions, 27 deletions
diff --git a/agent/cache.c b/agent/cache.c
index e8544205f..0a4a6fbbc 100644
--- a/agent/cache.c
+++ b/agent/cache.c
@@ -330,45 +330,41 @@ compute_expiration (ITEM r)
return 1;
}
- switch (r->cache_mode)
+ if (r->cache_mode == CACHE_MODE_DATA)
{
- case CACHE_MODE_DATA:
- case CACHE_MODE_PIN:
- maxttl = 0; /* No MAX TTL here. */
- break;
- case CACHE_MODE_SSH: maxttl = opt.max_cache_ttl_ssh; break;
- default: maxttl = opt.max_cache_ttl; break;
- }
-
- if (maxttl)
- {
- if (r->created + maxttl < current)
+ /* No MAX TTL here. */
+ if (r->ttl >= 0)
{
- r->t.tv_sec = 0;
+ r->t.tv_sec = r->ttl;
r->t.reason = CACHE_EXPIRE_CREATION;
return 1;
}
-
- next = r->created + maxttl - current;
+ else
+ return 0;
}
+ else if (r->cache_mode == CACHE_MODE_SSH)
+ maxttl = opt.max_cache_ttl_ssh;
else
- next = 0;
+ maxttl = opt.max_cache_ttl;
- if (r->ttl >= 0 && (next == 0 || r->ttl < next))
+ if (r->created + maxttl <= current)
{
- r->t.tv_sec = r->ttl;
- r->t.reason = CACHE_EXPIRE_LAST_ACCESS;
+ r->t.tv_sec = 0;
+ r->t.reason = CACHE_EXPIRE_CREATION;
return 1;
}
- if (next)
+ next = r->created + maxttl - current;
+ if (r->ttl >= 0 && r->ttl < next)
{
- r->t.tv_sec = next;
- r->t.reason = CACHE_EXPIRE_CREATION;
+ r->t.tv_sec = r->ttl;
+ r->t.reason = CACHE_EXPIRE_LAST_ACCESS;
return 1;
}
- return 0;
+ r->t.tv_sec = next;
+ r->t.reason = CACHE_EXPIRE_CREATION;
+ return 1;
}
static void
diff --git a/doc/gpg-agent.texi b/doc/gpg-agent.texi
index f207ceef4..14bb0632d 100644
--- a/doc/gpg-agent.texi
+++ b/doc/gpg-agent.texi
@@ -406,10 +406,7 @@ control this behavior but this command line option takes precedence.
Set the time a cache entry is valid to @var{n} seconds. The default
is 600 seconds. Each time a cache entry is accessed, the entry's
timer is reset. To set an entry's maximum lifetime, use
-@command{max-cache-ttl}. Note that a cached passphrase may not be
-evicted immediately from memory if no client requests a cache
-operation. This is due to an internal housekeeping function which is
-only run every few seconds.
+@command{max-cache-ttl}.
@item --default-cache-ttl-ssh @var{n}
@opindex default-cache-ttl