diff options
author | Bob Halley <halley@dnspython.org> | 2021-09-27 07:32:45 -0700 |
---|---|---|
committer | Bob Halley <halley@dnspython.org> | 2021-10-23 16:38:34 -0700 |
commit | b349b1b5b6bc769a78fec059a6856fb4bc185268 (patch) | |
tree | 628508069275d58c4e2066ea69a7d66b0023ca60 | |
parent | 95677ee0b1dcefd0f1d847f55cbe05a19fe72895 (diff) | |
download | dnspython-b349b1b5b6bc769a78fec059a6856fb4bc185268.tar.gz |
change error format to have current instead of last good
-rw-r--r-- | dns/message.py | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/dns/message.py b/dns/message.py index 4c94d69..e5a3c59 100644 --- a/dns/message.py +++ b/dns/message.py @@ -888,7 +888,6 @@ class _WireReader: self.keyring = keyring self.multi = multi self.continue_on_error = continue_on_error - self.last_good = 0 self.errors = [] def _get_question(self, section_number, qcount): @@ -905,7 +904,6 @@ class _WireReader: rdtype) self.message.find_rrset(section, qname, rdclass, rdtype, create=True, force_unique=True) - self.last_good = self.parser.current def _get_section(self, section_number, count): """Read the next I{count} records from the wire data and add them to @@ -935,13 +933,13 @@ class _WireReader: self.message._parse_rr_header(section_number, name, rdclass, rdtype) try: + rdata_start = self.parser.current if empty: if rdlen > 0: raise dns.exception.FormError rd = None covers = dns.rdatatype.NONE else: - self.last_good = self.parser.current with self.parser.restrict_to(rdlen): rd = dns.rdata.from_wire_parser(rdclass, rdtype, self.parser, @@ -989,17 +987,18 @@ class _WireReader: rrset.add(rd, ttl) except Exception as e: if self.continue_on_error: - self.errors.append((self.last_good, str(e), e)) + self.errors.append((self.parser.current, str(e), e)) try: - self.parser.seek(self.last_good + rdlen) + self.parser.seek(rdata_start + rdlen) except dns.exception.FormError: # seek was past the end self.parser.seek(self.parser.end) - if i != count - 1: - senum = MessageSection(section_number) - self.errors.append((self.end, 'not enough RRs in ' - f'section {senum}', - None)) + if self.parser.current == self.parser.end and \ + i != count - 1: + senum = MessageSection(section_number) + self.errors.append((self.parser.end, 'not enough RRs in ' + f'section {senum:d}', + None)) return else: raise |