X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-dns.git/blobdiff_plain/3cf61db85b376c3b1cfab1cb57a0f954fdb41e59..refs/heads/precise-prod:/invirt-dns?ds=sidebyside diff --git a/invirt-dns b/invirt-dns index c9ce43e..188d1ce 100755 --- a/invirt-dns +++ b/invirt-dns @@ -16,6 +16,7 @@ import psycopg2 import sqlalchemy import time import re +import sys class DatabaseAuthority(common.ResolverBase): """An Authority that is loaded from a file.""" @@ -221,7 +222,13 @@ class DelegatingQuotingBindAuthority(authority.BindAuthority): result = yield authority.BindAuthority._lookup(self, name, cls, type, timeout) defer.returnValue(result) - except dns.AuthoritativeDomainError: + except Exception as e: + # XXX: Twisted returns DomainError even if it is + # authoritative for the domain because our SOA record + # incorrectly contains (origin + "." + origin) + if not isinstance(e, (dns.DomainError, dns.AuthoritativeDomainError)): + sys.stderr.write("while looking up '%s', got: %s\n" % (name, e)) + # If we didn't find an exact match for the name we were # seeking, check if it's within a subdomain we're supposed # to delegate to some other DNS server. @@ -234,7 +241,7 @@ class DelegatingQuotingBindAuthority(authority.BindAuthority): result = yield authority.BindAuthority._lookup(self, name, cls, dns.NS, timeout) defer.returnValue(result) - except (dns.DomainError, dns.AuthoritativeDomainError): + except Exception: # Should be one of (dns.DomainError, dns.AuthoritativeDomainError) pass # We didn't find a delegation, so return the original # NXDOMAIN. @@ -267,6 +274,9 @@ if '__main__' == __name__: r = DelegatingQuotingBindAuthority(zone) # This sucks, but if I want a generic zone file, I have to # reload the information by hand + # XXX: This causes our SOA record to contain + # (origin + "." + origin) + # As a result the resolver never believes it is authoritative. r.origin = origin lines = open(zone).readlines() lines = r.collapseContinuations(r.stripComments(lines))