3838 SignalRegistrationInterface ,
3939)
4040from .._updates import RecordUpdate , RecordUpdateListener
41- from .._utils .name import service_type_name
41+ from .._utils .name import possible_types , service_type_name
4242from .._utils .time import current_time_millis , millis_to_seconds
4343from ..const import (
4444 _BROWSER_BACKOFF_LIMIT ,
@@ -326,7 +326,7 @@ def service_state_changed(self) -> SignalRegistrationInterface:
326326
327327 def _names_matching_types (self , names : Iterable [str ]) -> List [Tuple [str , str ]]:
328328 """Return the type and name for records matching the types we are browsing."""
329- return [(type_ , name ) for type_ in self . types for name in names if name . endswith ( f". { type_ } " )]
329+ return [(type_ , name ) for name in names for type_ in self . types . intersection ( possible_types ( name ) )]
330330
331331 def _enqueue_callback (
332332 self ,
@@ -352,16 +352,11 @@ def _async_process_record_update(
352352 ) -> None :
353353 """Process a single record update from a batch of updates."""
354354 if isinstance (record , DNSPointer ):
355- name = record .name
356- alias = record .alias
357- matches = self ._names_matching_types ((alias ,))
358- if name in self .types :
359- matches .append ((name , alias ))
360- for type_ , name in matches :
355+ for type_ in self .types .intersection (possible_types (record .name )):
361356 if old_record is None :
362- self ._enqueue_callback (ServiceStateChange .Added , type_ , name )
357+ self ._enqueue_callback (ServiceStateChange .Added , type_ , record . alias )
363358 elif record .is_expired (now ):
364- self ._enqueue_callback (ServiceStateChange .Removed , type_ , name )
359+ self ._enqueue_callback (ServiceStateChange .Removed , type_ , record . alias )
365360 else :
366361 self .reschedule_type (type_ , now , record .get_expiration_time (_EXPIRE_REFRESH_TIME_PERCENT ))
367362 return
0 commit comments