From ac0850a54133b2b63698cd17e319e7827756cbea Mon Sep 17 00:00:00 2001 From: cantor Date: Mon, 24 May 2010 22:38:34 +0000 Subject: [PATCH 1/1] https://bugs.internet2.edu/jira/browse/CPPOST-47 git-svn-id: https://svn.middleware.georgetown.edu/cpp-opensaml2/branches/REL_2@556 fb386ef7-a10c-0410-8ebf-fd3f8e989ab0 --- saml/saml2/metadata/impl/XMLMetadataProvider.cpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/saml/saml2/metadata/impl/XMLMetadataProvider.cpp b/saml/saml2/metadata/impl/XMLMetadataProvider.cpp index bf359c9..b6fa61b 100644 --- a/saml/saml2/metadata/impl/XMLMetadataProvider.cpp +++ b/saml/saml2/metadata/impl/XMLMetadataProvider.cpp @@ -186,6 +186,7 @@ pair XMLMetadataProvider::load(bool backup) remove(m_backing.c_str()); if (rename(backupKey.c_str(), m_backing.c_str()) != 0) m_log.crit("unable to rename metadata backup file"); + preserveCacheTag(); } xmlObject->releaseThisAndChildrenDOM(); @@ -207,7 +208,7 @@ pair XMLMetadataProvider::load(bool backup) // validUntil is the tightest interval amongst the children. // If a remote resource, adjust the reload interval. - if (!backup) { + if (!backup && !m_local) { m_backoffFactor = 1; m_reloadInterval = computeNextRefresh(); m_log.info("adjusted reload interval to %d seconds", m_reloadInterval); @@ -226,26 +227,28 @@ pair XMLMetadataProvider::background_load() if (ex == HTTPResponse::XMLTOOLING_HTTP_STATUS_NOTMODIFIED) { // Unchanged document, so re-establish previous refresh interval. m_reloadInterval = computeNextRefresh(); - m_log.info("adjusted reload interval to %d seconds", m_reloadInterval); + m_log.info("remote resource (%s) unchanged, adjusted reload interval to %u seconds", m_source.c_str(), m_reloadInterval); } else { // Any other status code, just treat as an error. m_reloadInterval = m_minRefreshDelay * m_backoffFactor++; if (m_reloadInterval > m_maxRefreshDelay) m_reloadInterval = m_maxRefreshDelay; - m_log.warn("adjusted reload interval to %d seconds", m_reloadInterval); + m_log.warn("adjusted reload interval to %u seconds", m_reloadInterval); } if (!m_loaded && !m_backing.empty()) return load(true); throw; } catch (exception&) { - m_reloadInterval = m_minRefreshDelay * m_backoffFactor++; - if (m_reloadInterval > m_maxRefreshDelay) - m_reloadInterval = m_maxRefreshDelay; - m_log.warn("adjusted reload interval to %d seconds", m_reloadInterval); - if (!m_loaded && !m_backing.empty()) - return load(true); + if (!m_local) { + m_reloadInterval = m_minRefreshDelay * m_backoffFactor++; + if (m_reloadInterval > m_maxRefreshDelay) + m_reloadInterval = m_maxRefreshDelay; + m_log.warn("adjusted reload interval to %u seconds", m_reloadInterval); + if (!m_loaded && !m_backing.empty()) + return load(true); + } throw; } } -- 2.1.4