@@ -87,6 +87,11 @@ def instance_name_from_service_info(info: "ServiceInfo") -> str:
87
87
_cached_ip_addresses = lru_cache (maxsize = 256 )(ipaddress .ip_address )
88
88
89
89
90
+ @lru_cache (maxsize = 256 )
91
+ def _packed_address (address : Union [ipaddress .IPv4Address , ipaddress .IPv6Address ]) -> bytes :
92
+ return address .packed
93
+
94
+
90
95
class ServiceInfo (RecordUpdateListener ):
91
96
"""Service information.
92
97
@@ -243,12 +248,12 @@ def addresses_by_version(self, version: IPVersion) -> List[bytes]:
243
248
address of the given IP version.
244
249
"""
245
250
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 ]
247
252
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 ]
249
254
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 ),
252
257
]
253
258
254
259
def ip_addresses_by_version (
@@ -485,7 +490,7 @@ def dns_addresses(
485
490
_TYPE_AAAA if address .version == 6 else _TYPE_A ,
486
491
_CLASS_IN | _CLASS_UNIQUE ,
487
492
override_ttl if override_ttl is not None else self .host_ttl ,
488
- address . packed ,
493
+ _packed_address ( address ) ,
489
494
created = created ,
490
495
)
491
496
for address in self .ip_addresses_by_version (version )
0 commit comments