From 99c99afd44e44ba9ec3765c8cb3f9dc4a470d087 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Thu, 23 Sep 2021 08:34:25 -0500 Subject: [PATCH] Breakout functions with no self-use in zeroconf._handlers --- zeroconf/_handlers.py | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/zeroconf/_handlers.py b/zeroconf/_handlers.py index 5215f2026..b4c31e2db 100644 --- a/zeroconf/_handlers.py +++ b/zeroconf/_handlers.py @@ -227,6 +227,19 @@ def _has_mcast_record_in_last_second(self, record: DNSRecord) -> bool: return bool(maybe_entry and self._now - maybe_entry.created < _ONE_SECOND) +def _get_address_and_nsec_records(service: ServiceInfo, now: float) -> Set[DNSRecord]: + """Build a set of address records and NSEC records for non-present record types.""" + seen_types: Set[int] = set() + records: Set[DNSRecord] = set() + for dns_address in service.dns_addresses(created=now): + seen_types.add(dns_address.type) + records.add(dns_address) + missing_types: Set[int] = _ADDRESS_RECORD_TYPES - seen_types + if missing_types: + records.add(construct_nsec_record(service.server, list(missing_types), now)) + return records + + class QueryHandler: """Query the ServiceRegistry.""" @@ -261,21 +274,9 @@ def _add_pointer_answers( if known_answers.suppresses(dns_pointer): continue additionals: Set[DNSRecord] = {service.dns_service(created=now), service.dns_text(created=now)} - additionals |= self._get_address_and_nsec_records(service, now) + additionals |= _get_address_and_nsec_records(service, now) answer_set[dns_pointer] = additionals - def _get_address_and_nsec_records(self, service: ServiceInfo, now: float) -> Set[DNSRecord]: - """Build a set of address records and NSEC records for non-present record types.""" - seen_types: Set[int] = set() - records: Set[DNSRecord] = set() - for dns_address in service.dns_addresses(created=now): - seen_types.add(dns_address.type) - records.add(dns_address) - missing_types: Set[int] = _ADDRESS_RECORD_TYPES - seen_types - if missing_types: - records.add(construct_nsec_record(service.server, list(missing_types), now)) - return records - def _add_address_answers( self, name: str, @@ -332,7 +333,7 @@ def _answer_question( # https://tools.ietf.org/html/rfc6763#section-12.2. dns_service = service.dns_service(created=now) if not known_answers.suppresses(dns_service): - answer_set[dns_service] = self._get_address_and_nsec_records(service, now) + answer_set[dns_service] = _get_address_and_nsec_records(service, now) if type_ in (_TYPE_TXT, _TYPE_ANY): dns_text = service.dns_text(created=now) if not known_answers.suppresses(dns_text):