+ if (!m_local && m_maxRefreshDelay) {
+ const XMLCh* setting = e ? e->getAttributeNS(nullptr, refreshDelayFactor) : NULL;
+ if (setting && *setting) {
+ auto_ptr_char delay(setting);
+ m_refreshDelayFactor = atof(delay.get());
+ if (m_refreshDelayFactor <= 0.0 || m_refreshDelayFactor >= 1.0) {
+ m_log.error("invalid refreshDelayFactor setting, using default");
+ m_refreshDelayFactor = 0.75;
+ }
+ }
+ setting = e ? e->getAttributeNS(nullptr, minRefreshDelay) : NULL;
+ if (setting && *setting) {
+ m_minRefreshDelay = XMLString::parseInt(setting);
+ if (m_minRefreshDelay == 0) {
+ m_log.error("invalid minRefreshDelay setting, using default");
+ m_minRefreshDelay = 600;
+ }
+ else if (m_minRefreshDelay > m_maxRefreshDelay) {
+ m_log.error("minRefreshDelay setting exceeds maxRefreshDelay/refreshInterval setting, lowering to match it");
+ m_minRefreshDelay = m_maxRefreshDelay;
+ }
+ }
+ }
+}
+
+pair<bool,DOMElement*> XMLMetadataProvider::load(bool backup)
+{
+ // Lower the refresh rate in case of an error.
+ m_reloadInterval = m_minRefreshDelay;