- if not (name.lower() == self.domain or
- name.lower().endswith('.'+self.domain)):
- #Not us
- return defer.fail(failure.Failure(dns.DomainError(name)))
+ for i in range(3):
+ try:
+ value = self._lookup_unsafe(name, cls, type, timeout = None)
+ except (psycopg2.OperationalError, sqlalchemy.exceptions.SQLError):
+ if i == 2:
+ raise
+ print "Reloading database"
+ time.sleep(0.5)
+ continue
+ else:
+ return value
+
+ def _lookup_unsafe(self, name, cls, type, timeout):
+ sipb_xen_database.clear_cache()
+ if name.lower() in self.domains:
+ domain = name.lower()
+ else:
+ found = False
+ for domain in self.domains:
+ if name.lower().endswith('.'+domain):
+ found = True
+ break
+ if not found:
+ #Not us
+ return defer.fail(failure.Failure(dns.DomainError(name)))