def _fetchServers(self, host): try: service = "_matrix._tcp.%s" % host answers, auth, add = yield client.lookupService(service) except DNSNameError: answers = [] if (len(answers) == 1 and answers[0].type == dns.SRV and answers[0].payload and answers[0].payload.target == dns.Name(".")): raise DNSNameError("Service %s unavailable", service) servers = [] for answer in answers: if answer.type != dns.SRV or not answer.payload: continue payload = answer.payload servers.append(ThreepidBinder._Server( host=str(payload.target), port=int(payload.port), priority=int(payload.priority), weight=int(payload.weight) )) servers.sort() defer.returnValue(servers)
def __init__(self, errorMessage, dnsError=False): self.value = None if dnsError: self.value = Dummy() self.value.subFailure = Dummy() self.value.subFailure.value = DNSNameError(errorMessage) self.getErrorMessage = lambda: errorMessage
def test_SRVNotPresent(self): """ Test connectTCP gets called with fallback parameters on NXDOMAIN. """ client.theResolver.failure = DNSNameError(b'example.org') self.connector.connect() self.assertIsNone(self.factory.reason) self.assertEqual(self.reactor.tcpClients.pop()[:2], ('example.org', 'xmpp-server'))
def test_SRVNotPresent(self): """ Test connectTCP gets called with fallback parameters on NXDOMAIN. """ client.theResolver.failure = DNSNameError('example.org') self.connector.connect() self.assertIdentical(None, self.factory.reason) self.assertEqual('example.org', self.reactor.host) self.assertEqual('xmpp-server', self.reactor.port)
def getHostByName(*args, **kwargs) -> Deferred: return fail(DNSNameError())