When generating tickets for clients, use next key if the current
is expired. That ensures they will renew before their ticket
times out.
RotatingSecrets& secrets = iter->second;
- // second to oldest
+ // second to oldest, unless it's expired
map<uint64_t, ExpiringCryptoKey>::iterator riter = secrets.secrets.begin();
if (secrets.secrets.size() > 1)
++riter;
+ if (riter->second.expiration < g_clock.now())
+ ++riter; // "current" key has expired, use "next" key instead
+
secret_id = riter->first;
secret = riter->second;
dout(10) << "get_service_secret service " << ceph_entity_type_name(service_id)