https://bugs.internet2.edu/jira/browse/CPPOST-47
authorcantor <cantor@fb386ef7-a10c-0410-8ebf-fd3f8e989ab0>
Mon, 24 May 2010 22:38:34 +0000 (22:38 +0000)
committercantor <cantor@fb386ef7-a10c-0410-8ebf-fd3f8e989ab0>
Mon, 24 May 2010 22:38:34 +0000 (22:38 +0000)
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

index bf359c9..b6fa61b 100644 (file)
@@ -186,6 +186,7 @@ pair<bool,DOMElement*> 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<bool,DOMElement*> 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<bool,DOMElement*> 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;
     }
 }