MCPcopy Create free account
hub / github.com/rthalley/dnspython / query_result

Method query_result

dns/resolver.py:781–903  ·  view source on GitHub ↗
(
        self, response: dns.message.Message | None, ex: Exception | None
    )

Source from the content-addressed store, hash-verified

779 return (self.nameserver, self.tcp_attempt, backoff)
780
781 def query_result(
782 self, response: dns.message.Message | None, ex: Exception | None
783 ) -> Tuple[Answer | None, bool]:
784 #
785 # returns an (answer: Answer, end_loop: bool) tuple.
786 #
787 assert self.nameserver is not None
788 if ex:
789 # Exception during I/O or from_wire()
790 assert response is None
791 self.errors.append(
792 (
793 str(self.nameserver),
794 self.tcp_attempt,
795 self.nameserver.answer_port(),
796 ex,
797 response,
798 )
799 )
800 if (
801 isinstance(ex, dns.exception.FormError)
802 or isinstance(ex, EOFError)
803 or isinstance(ex, OSError)
804 or isinstance(ex, NotImplementedError)
805 ):
806 # This nameserver is no good, take it out of the mix.
807 self.nameservers.remove(self.nameserver)
808 elif isinstance(ex, dns.message.Truncated):
809 if self.tcp_attempt:
810 # Truncation with TCP is no good!
811 self.nameservers.remove(self.nameserver)
812 else:
813 self.retry_with_tcp = True
814 return (None, False)
815 # We got an answer!
816 assert response is not None
817 assert isinstance(response, dns.message.QueryMessage)
818 rcode = response.rcode()
819 if rcode == dns.rcode.NOERROR:
820 try:
821 answer = Answer(
822 self.qname,
823 self.rdtype,
824 self.rdclass,
825 response,
826 self.nameserver.answer_nameserver(),
827 self.nameserver.answer_port(),
828 )
829 except Exception as e:
830 self.errors.append(
831 (
832 str(self.nameserver),
833 self.tcp_attempt,
834 self.nameserver.answer_port(),
835 e,
836 response,
837 )
838 )

Calls 9

AnswerClass · 0.85
NoAnswerClass · 0.85
YXDOMAINClass · 0.85
removeMethod · 0.80
rcodeMethod · 0.80
answer_portMethod · 0.45
answer_nameserverMethod · 0.45
putMethod · 0.45
to_textMethod · 0.45