keepsimple1 / mdns-sd

Rust library for mDNS based Service Discovery
Apache License 2.0
89 stars 38 forks source link

avoid redundant annoucement or query packets #135

Closed keepsimple1 closed 9 months ago

keepsimple1 commented 9 months ago

cargo test seems flaky locally when there are many (e.g. 10) IPv6 interfaces on the same subnet. Sometimes IPv4 addr is not resolved in time, or the IPv4 packet seems to be lost.

One reason this could happen is that currently we always send out query packets and announcement packets on every address if they are all on the same subnet. This can cause a small "packet storm" if there are many addrs on the same subnet, especially link-local addrs.

In reality, we only need to send these packets once for one subnet, except the retransmissions per the RFC. This diff is to avoid such redundant packets on the same subnet.