diff --git a/src/net.rs b/src/net.rs index 9329c51..5cf789f 100644 --- a/src/net.rs +++ b/src/net.rs @@ -69,24 +69,27 @@ pub fn setup_mdns_task(mut commands: Commands) -> Result { continue; }; - if resp.answers.iter().any(|answer| { - if let Record::PTR(_) = &answer.record { - answer.name == "_picostrike._tcp.local" - } else { - false - } - }) && let Some(instance) = resp.additional.iter().find_map(|answer| { - if let Record::SRV(srv) = &answer.record { - Some(InstanceDetails { - host: answer.name.to_string(), - address: srv.target.to_string(), - port: srv.port, - ip: socket.ip(), - }) - } else { - None - } - }) { + if resp.flags.is_authoritative() + && resp.answers.iter().any(|answer| { + if let Record::PTR(_) = &answer.record { + answer.name == "_picostrike._tcp.local" + } else { + false + } + }) + && let Some(instance) = resp.additional.iter().find_map(|answer| { + if let Record::SRV(srv) = &answer.record { + Some(InstanceDetails { + host: answer.name.to_string(), + address: srv.target.to_string(), + port: srv.port, + ip: socket.ip(), + }) + } else { + None + } + }) + { resp_tx.send(instance).await.ok(); } }