@@ -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+
9095class 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