- Not to use link-local addrs if routable addrs exist (#117)
-
Internal refactoring: always use DnsCache to resolve Servive Instances. When processing incoming packets, we used to update the cache one record at a time and also build separate service info structs to resolve. Now we finish the cache updates first, and then resolve instances from the cache.
-
Added env_logger for the examples code and enhanced the examples as well.
- Support updating instances after they are resolved by @keepsimple1 in keepsimple1#104
- add optional "unregister" in example code by @keepsimple1 in keepsimple1#107
- Returns an error with logging for read_name invalid offset by @keepsimple1 in keepsimple1#109
- register example should keep running by @keepsimple1 in keepsimple1#110
- Refactoring DnsCache and how to resolve Service Instance by @keepsimple1 in keepsimple1#108
- add sanity check in reading a record data RDATA by @keepsimple1 in keepsimple1#111
- Enable logging for the examples by @keepsimple1 in keepsimple1#112
- register example: a simpler input for the service type by @keepsimple1 in keepsimple1#113
Highlights:
-
Implemented
Display
trait forTxtProperty
: print usingkey=value
format, wherevalue
is same as.get_property_val_str()
. -
Implemented
Debug
trait forTxtProperty
: print using a struct format, wherevalue
prints as a string if it is UTF-8, or prints as hex if it is not UTF-8.
Highlights:
- A bug fix: remove duplicated keys in TXT records received.
Breaking Changes:
-
Allow non-standard max length for a service name. The check for the length of a service name is moved to the daemon. If a service name is too long, there will be an error log and an error event sent to the monitors.
-
ServiceInfo.get_property_val()
returnsOption<Option<&[u8]>>
instead ofOption<&str>
. Now a newServiceInfo.get_property_val_str()
returnsOption<&str>
.
In other words, migrate to get_property_val_str()
if you don't
want to worry about non-UTF8 values.
Highlights:
- Allow non-standard max length for a service name: A new method
ServiceDaemon.set_service_name_len_max()
is added to support that. Only use it when you really need to. - Support non-UTF-8 value for TXT properties.
- Support
no value
for a TXT property, i.e. boolean keys. - Added checks for ASCII keys in a TXT property.
Highlights:
- Fixs a bug: missing TXT records in received responses.
Breaking Changes:
ServiceInfo::new()
takesIntoTxtProperties
trait instead of aHashMap
of properties. It is also backward-compatiable: the trait is implemented forHashMap
andOption<HashMap>
.ServiceInfo::get_properties()
returns&TxtProperties
instead of aHashMap
of properties. It is also mostly backward-compatiable: supportiter()
,get()
methods.
Highlights:
- TXT properties' names are now case insensitive. And the original user input order is kept.
- A new method
ServiceInfo::enable_addr_auto()
: automatically fill in IP addresses for published services. - Detect IP changes.
- A new
ServiceDaemon::monitor()
method to return aReceiver
handle to monitor the daemon events, such as IP changes.
- skip interfaces that failed to bind (#79) (re-apply fix in v0.5.6)
- Ignore duplicate keys (#74)
- update error msg for send_packet (#69)
- call check_service_name before sending the cmd to the daemon. (#60)
- Changed dependency on 'log' crate to be optional (#64)
- configure mDNS daemon thread a name (#66)
- log an error if socket read returns 0 and reset the socket (#67)
- Allow service names with trailing '.' (#56)
- query unresolved instances (#58)
- handle join_multicast_v4 error gracefully (#53)
- track IPv4 interfaces with sockets to support multiple LANs (#48)
- Fix a bug in resolving multiple IPs for a host.
- Code reorg: separate modules out of lib.rs.
- Listening socket joins multicast on all interfaces.
- Support subtypes.
- Bind every valid IPv4 interface for outgoing sockets.
- Include Windows and macOS in GitHub Actions.
- Add support for Windows platform.
- Fix missing info in the license files.
- Add docs.rs badge.
- Make Error implement std::error::Error.
- Allow multiple formats for host_ipv4 to create ServiceInfo.
- A breaking change: change
ServiceInfo::new()
to return aResult<>
. - Update
nix
dependency to version 0.24.1.
- Fix a bug in stop-browse
- New feature: support meta-query
_services._dns-sd._udp
per RFC 6763.
- Update docs.
- Replace
crossbeam-channel
withflume
.
- Add "get_metrics" in API.
- Fixed a bug in cache refresh.
- Fixed a bug in retransmission.
- Add the first example code. Thanks @lu-zero! (#5)
- mDNS daemon respond socket to be blocking for simpler send.
- Public API internally to use the unblocking try_send() to replace send().
- Add
Again
in Error type to support retry.
- Initial version