@@ -1984,20 +1984,33 @@ def get_name(self) -> str:
19841984 return self .name [: len (self .name ) - len (self .type ) - 1 ]
19851985
19861986 def update_record (self , zc : 'Zeroconf' , now : float , record : Optional [DNSRecord ]) -> None :
1987- """Updates service information from a DNS record."""
1988- if record is None or record .is_expired (now ):
1989- return
1987+ """Updates service information from a DNS record.
1988+
1989+ This method is deprecated and will be removed in a future version.
1990+ update_records should be implemented instead.
1991+ """
1992+ if record is not None :
1993+ self .update_records (zc , now , [record ])
19901994
1991- self ._process_record (record )
1995+ def update_records (self , zc : 'Zeroconf' , now : float , records : List [DNSRecord ]) -> None :
1996+ """Updates service information from a DNS record."""
1997+ update_addresses = False
1998+ for record in records :
1999+ if isinstance (record , DNSService ):
2000+ update_addresses = True
2001+ self ._process_record (record , now )
19922002
19932003 # Only update addresses if the DNSService (.server) has changed
1994- if not isinstance ( record , DNSService ) :
2004+ if not update_addresses :
19952005 return
19962006
1997- for cached_record in self ._get_address_records_from_cache (zc ):
1998- self ._process_record (cached_record )
2007+ for record in self ._get_address_records_from_cache (zc ):
2008+ self ._process_record (record , now )
2009+
2010+ def _process_record (self , record : DNSRecord , now : float ) -> None :
2011+ if record .is_expired (now ):
2012+ return
19992013
2000- def _process_record (self , record : DNSRecord ) -> None :
20012014 if isinstance (record , DNSAddress ):
20022015 if record .key == self .server_key and record .address not in self ._addresses :
20032016 self ._addresses .append (record .address )
@@ -2087,8 +2100,7 @@ def load_from_cache(self, zc: 'Zeroconf') -> bool:
20872100 cached_txt_record = zc .cache .get_by_details (self .name , _TYPE_TXT , _CLASS_IN )
20882101 if cached_txt_record :
20892102 record_updates .append (cached_txt_record )
2090- for record in record_updates :
2091- self .update_record (zc , now , record )
2103+ self .update_records (zc , now , record_updates )
20922104 return self ._is_complete
20932105
20942106 @property
0 commit comments