- // Translate cacheDuration into validUntil.
- if (entity2->getCacheDuration())
- entity2->setValidUntil(time(NULL) + min(m_maxCacheDuration, entity2->getCacheDurationEpoch()));
+ log.info("caching resolved metadata for (%s)", name.c_str());
+
+ // Translate cacheDuration into validUntil.
+ time_t exp = m_maxCacheDuration;
+ if (entity2->getCacheDuration())
+ exp = min(m_maxCacheDuration, entity2->getCacheDurationEpoch());
+ exp += time(NULL);
+ if (entity2->getValidUntil()) {
+ if (exp < entity2->getValidUntilEpoch())
+ entity2->setValidUntil(exp);
+ }
+ else {
+ entity2->setValidUntil(exp);
+ }