diff --git a/confluent_server/confluent/discovery/protocols/ssdp.py b/confluent_server/confluent/discovery/protocols/ssdp.py index 3a3eb49a..937a5312 100644 --- a/confluent_server/confluent/discovery/protocols/ssdp.py +++ b/confluent_server/confluent/discovery/protocols/ssdp.py @@ -189,6 +189,10 @@ def snoop(handler, byehandler=None, protocol=None, uuidlookup=None): continue recent_peers.add(peer) mac = neighutil.get_hwaddr(peer[0]) + if mac == False: + # neighutil determined peer ip is not local, skip attempt + # to probe and critically, skip growing deferrednotifiers + continue if not mac: probepeer = (peer[0], struct.unpack('H', os.urandom(2))[0] | 1025) + peer[2:] try: diff --git a/confluent_server/confluent/neighutil.py b/confluent_server/confluent/neighutil.py index 5841f868..de0d3ff2 100644 --- a/confluent_server/confluent/neighutil.py +++ b/confluent_server/confluent/neighutil.py @@ -97,7 +97,9 @@ def get_hwaddr(ipaddr): _update_neigh() updated = True hwaddr = neightable.get(ipaddr, None) - if not hwaddr and not updated and netutil.ip_is_local(ipaddr): + if not hwaddr and not netutil.ip_is_local(ipaddr): + hwaddr = False + if hwaddr == None and not updated: _update_neigh() hwaddr = neightable.get(ipaddr, None) if hwaddr: