Releases: keepsimple1/mdns-sd
v0.19.1
Version 0.19.1 (2026-04-19)
This is a bugfix release.
Bug fixes
- When responding to a query, pick a source IP that matches the querier's subnet, so responses are reachable on multi-homed hosts. (#460, commit
d210372) - Validate TXT property length in the
ServiceInfoconstructor, catching oversized properties at registration time instead of at send time. (#458, commitcc81eec)
What's Changed
- fix: check TXT property length in ServiceInfo constructor by @keepsimple1 in #458
- fix: use a source IP matching the querier's subnet when responding by @keepsimple1 in #460
- prepare for release 0.19.1 by @keepsimple1 in #461
Full Changelog: v0.19.0...v0.19.1
v0.19.0
Breaking changes
ScopedIpV4now carriesinterface_idstracking which network interfaces discovered the address. The derivedEq/Hashnow includes interface_ids, so twoScopedIpV4values with the same IP but different interface lists are no longer equal. (commits 43bd8f3, 0661bf1, 247447b)
New features
- New optional
serdefeature: adds Serialize/Deserialize onInterfaceId,ScopedIpV4,ScopedIpV6,ScopedIp,TxtProperties,TxtProperty, andResolvedService. (commit c2c2f75) - New public APIs:
ScopedIpV4::new(),ScopedIpV4::interface_ids(),InterfaceId::get_addrs().
Bug fixes
- Avoid known-answer suppression when querying on a new interface, so address records are discovered promptly. (commit 468c5ee)
- Track modified instances when removing records from an interface, so ServiceResolved events reflect updated addresses. (commit 7daa1d4)
What's Changed
- add interface_id in ScopedIpV4 by @keepsimple1 in #439
- Serde Deserialize+Serialize implementation by @rabbit-time in #440
- refactoring: ScopedIpV4 to use multiple InterfaceIds by @keepsimple1 in #444
- fix: ScopedIp considered Eq when interface_ids change by @keepsimple1 in #446
- fix: track modified_instances when removing an interface by @keepsimple1 in #448
- fix: avoid known-answer suppression when querying on a new interface by @keepsimple1 in #450
- refactoring: move add_answer_with_additionals into struct DnsOutgoing by @keepsimple1 in #451
- refactoring: simplify handle_query by @keepsimple1 in #452
- Release: bump version to 0.19.0 by @keepsimple1 in #453
New Contributors
- @rabbit-time made their first contribution in #440 Thank you and welcome!
Full Changelog: v0.18.2...v0.19.0
v0.18.2
What's Changed
A bugfix: refresh of address records didn't work when hostname is not lowercase.
All changes
- fix: Refresh of A and AAAA records by @hrzlgnm in #441
- bump up version to 0.18.2 by @keepsimple1 in #442
Full Changelog: v0.18.1...v0.18.2
v0.18.1
What's Changed
- A bugfix for
disable_interfacewith an IPv4 address: clarified that the semantics is to disable IPv4 on the interface identified by the IPv4 address. - Added new variants for
IfKindenum:IndexIPV4(u32)andIndexIPV6(u32).
All changes
- fix(test): use all IPv4 interfaces in test_disable_interface_cache by @keepsimple1 in #435
- bump up version to 0.18.1 by @keepsimple1 in #436
Full Changelog: v0.18.0...v0.18.1
v0.18.0
What's Changed
A few new features, documentation enhancements and breaking changes.
Breaking changes
- Removed one default feature:
reuseport. It is handled transparently now. (see commit58bc8c5) - New feature: support
.and\in instance names (see commit3481b94) - New internal fix: proper cleanup on daemon shutdown (see commit
8d24304) - New internal fix: exclude point-to-point interfaces by default (e.g. tunnel interface) (see commit
85b6cd9)
All changes
- ci: update github action checkout by @thibaut-pascal in #422
- Return errors from send_dns_outgoing by @keepsimple1 in #419
- fix: only add scope to unicast link local v6 addresses when printing by @hrzlgnm in #424
- feat: implement RFC 6763 Section 4.3 escaping for instance names by @thibaut-pascal in #420
- chore: update some comments by @keepsimple1 in #429
- Improve daemon shutdown with proper cleanup by @thibaut-pascal in #421
- fix: invert reuseport feature by @keepsimple1 in #430
- fix for macOS: exclude IFF_POINTTOPOINT interfaces and exclude Apple P2P interfaces by default by @keepsimple1 in #425
- Added documentation about service name length <=15 accoring to #427 by @FelixSelter in #431
- prepare for a new release: 0.18.0 by @keepsimple1 in #434
New Contributors
- @thibaut-pascal made their first contribution in #422
- @FelixSelter made their first contribution in #431
Full Changelog: v0.17.2...v0.18.0
v0.17.2
New features (non-breaking)
A new 'feature' literally: a default feature reuseport to control if SO_REUSEPORT should be used. Useful for old Linux kernels (before 3.9).
What's Changed
- exmaples: add --verify option in the query example by @keepsimple1 in #412
- feat:
reuseportfeature by @Hanssen0 in #414 - prepare for v0.17.2 by @keepsimple1 in #417
New Contributors
Thanks and welcome!
Full Changelog: v0.17.1...v0.17.2
v0.17.1
New features (non-breaking)
ServiceDaemon::new_with_port(port: u16) allows using a custom port for mainly development / testing purposes.
What's Changed
- Handle empty packets from send_dns_outgoing by @keepsimple1 in #407
- Add a custom port option by @kaidokert in #408
- feat: use Self on impl return of itself by @CosminPerRam in #409
- prepare for a new release v0.17.1 by @keepsimple1 in #411
New Contributors
- @kaidokert made their first contribution in #408
Full Changelog: v0.17.0...v0.17.1
v0.17.0
Breaking changes
Loopback interfaces are enabled by default now. The main reason is that some user reported a failure of publishing services locally. I think this change probably only impacts very few.
New features
A couple of new APIs are added for ServiceInfo: set_interfaces and set_link_local_only based on some real world use cases.
What's Changed
- Fix clippy for tests and remove unnecessary tests by @keepsimple1 in #403
- Enable loopback interfaces by default by @keepsimple1 in #397
- feat: service registration with granular iface/ip conditions by @twizansk in #398
- prepare for release 0.17.0 by @keepsimple1 in #404
Full Changelog: v0.16.0...v0.17.0
v0.16.0
What's Changed
A bugfix release. But we also bumped up rustc MSRV to 1.71.0, hence bumping our own minor version.
- refactoring only: make resolve_updated_instances easier to understand by @keepsimple1 in #393
- log the interface name when joining multicast group by @keepsimple1 in #394
- Handle IPv6 disabled in kernel by @keepsimple1 in #396
- prepare to release v0.16.0 by @keepsimple1 in #400
Full Changelog: v0.15.1...v0.16.0
v0.15.1
What's Changed
New feature: cache only browsing. Check out the new methods browse_cache and accept_unsolicited.
- feat: support cache only browsing by @twizansk in #388
- bump up version to 0.15.1 by @keepsimple1 in #390
New Contributors - welcome!
Full Changelog: v0.15.0...v0.15.1