Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 043bdaa

Browse filesBrowse files
committed
feat: speed up responses by caching address packing
1 parent 55c879c commit 043bdaa
Copy full SHA for 043bdaa

File tree

1 file changed

+10
-5
lines changed
Filter options

1 file changed

+10
-5
lines changed

‎src/zeroconf/_services/info.py

Copy file name to clipboardExpand all lines: src/zeroconf/_services/info.py
+10-5Lines 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 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.