Skip to content

Commit 043bdaa

Browse files
committed
feat: speed up responses by caching address packing
1 parent 55c879c commit 043bdaa

1 file changed

Lines changed: 10 additions & 5 deletions

File tree

src/zeroconf/_services/info.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,11 @@ def instance_name_from_service_info(info: "ServiceInfo") -> str:
8787
_cached_ip_addresses = lru_cache(maxsize=256)(ipaddress.ip_address)
8888

8989

90+
@lru_cache(maxsize=256)
91+
def _packed_address(address: Union[ipaddress.IPv4Address, ipaddress.IPv6Address]) -> bytes:
92+
return address.packed
93+
94+
9095
class ServiceInfo(RecordUpdateListener):
9196
"""Service information.
9297
@@ -243,12 +248,12 @@ def addresses_by_version(self, version: IPVersion) -> List[bytes]:
243248
address of the given IP version.
244249
"""
245250
if version == IPVersion.V4Only:
246-
return [addr.packed for addr in self._ipv4_addresses]
251+
return [_packed_address(addr) for addr in self._ipv4_addresses]
247252
if version == IPVersion.V6Only:
248-
return [addr.packed for addr in self._ipv6_addresses]
253+
return [_packed_address(addr) for addr in self._ipv6_addresses]
249254
return [
250-
*(addr.packed for addr in self._ipv4_addresses),
251-
*(addr.packed for addr in self._ipv6_addresses),
255+
*(_packed_address(addr) for addr in self._ipv4_addresses),
256+
*(_packed_address(addr) for addr in self._ipv6_addresses),
252257
]
253258

254259
def ip_addresses_by_version(
@@ -485,7 +490,7 @@ def dns_addresses(
485490
_TYPE_AAAA if address.version == 6 else _TYPE_A,
486491
_CLASS_IN | _CLASS_UNIQUE,
487492
override_ttl if override_ttl is not None else self.host_ttl,
488-
address.packed,
493+
_packed_address(address),
489494
created=created,
490495
)
491496
for address in self.ip_addresses_by_version(version)

0 commit comments

Comments
 (0)