If I set max-cache-ttl in gpg-agent.conf to 1 and I don't set default-cache-ttl,
max-cache-ttl appears to be ignored. In agent/gpg-agent.c, there is the
following function:
static void
finalize_rereadable_options (void)
{
/* It would be too surprising if the max-cache-ttl is lower than the
default-cache-ttl - thus we silently correct that. */
if (opt.def_cache_ttl > opt.max_cache_ttl)
opt.max_cache_ttl = opt.def_cache_ttl;
if (opt.def_cache_ttl_ssh > opt.max_cache_ttl_ssh)
opt.max_cache_ttl_ssh = opt.def_cache_ttl_ssh;
}This raises max-cache-ttl to be at least default-cache-ttl. As
default-cache-ttl is unset, it has the default value of 600 and max-cache-ttl is
increased accordingly.
I think think this behavior is wrong. The minimal change (in terms of changes
to the current semantics) is to raise max-cache-ttl only if default-cache-ttl
was actually set. However, I think the better approach is to not do this fixup
at all; I'm surprised that someone thinks the current behavior is not surprising.