@@ -212,6 +212,9 @@ def __init__(
212
212
self .target = target
213
213
self .target_1 = (target , self .discovery_port )
214
214
self .target_2 = (target , Discover .DISCOVERY_PORT_2 )
215
+ broadcast_target = "." .join (target .split ("." )[:3 ]) + ".255"
216
+ self .single_host = broadcast_target != target
217
+ self .target_3 = (broadcast_target , Discover .DISCOVERY_PORT_2 )
215
218
216
219
self .discovered_devices = {}
217
220
self .unsupported_device_exceptions : dict = {}
@@ -277,7 +280,7 @@ async def do_discover(self) -> None:
277
280
break
278
281
self .transport .sendto (encrypted_req [4 :], self .target_1 ) # type: ignore
279
282
self .transport .sendto (Discover .DISCOVERY_QUERY_2 , self .target_2 ) # type: ignore
280
- self .transport .sendto (aes_discovery_query , self .target_2 ) # type: ignore
283
+ self .transport .sendto (aes_discovery_query , self .target_3 ) # type: ignore
281
284
await asyncio .sleep (sleep_between_packets )
282
285
283
286
def datagram_received (self , data , addr ) -> None :
@@ -287,7 +290,7 @@ def datagram_received(self, data, addr) -> None:
287
290
288
291
ip , port = addr
289
292
# Prevent multiple entries due multiple broadcasts
290
- if ip in self .seen_hosts :
293
+ if ip in self .seen_hosts or ( self . single_host and ip != self . target ) :
291
294
return
292
295
self .seen_hosts .add (ip )
293
296
0 commit comments