[avahi] [ANNOUNCE] Avahi 0.8, the 'Dobro Jutro' release
Trent Lloyd
trent at lloyd.id.au
Tue Mar 3 02:47:31 UTC 2020
The Avahi 0.8 release brings a number of new features and bug fix changes
including a backward-compatible addition to the D-Bus API and the avahi-core
API.
The existing API is still fully supported however clients using the new
API will not work with older Avahi releases. The avahi-client library is not
affected. See the "API Changes" section for further details.
New Features:
- New options for filtering reflected queries between networks
(reflect-filter)
- New mainloop integration for Qt5 and libevent
- docs/THREADS: Information for multi-threaded avahi-client apps
- Listen on loopback interfaces by default, allowing local-only services
to be
consumed by the local machine
- New D-Bus V2 API and additions to the avahi-core API for splitting "New"
calls into "Prepare" and "Start". See "API Changes" for more details.
Notable Changes:
- avahi-autoipd: Initial IP selection based on MAC previously ignored first
octet - this will cause all hosts to select a different link-local IP
than
previous versions based on the same MAC address
- avahi-daemon: Delay sending results on an object for 10ms in an attempt to
give clients enough time to subscribe to signals from the new object
after
receiving it's path in response so the New call. See "API Changes"
for more
info
Bug Fixes:
- avahi-python: Various Python 3 enhancements including encoding unicode
strings as UTF-8
- avahi-common: avahi_string_list_to_string will now escape embedded quotes,
backslashes and control characters.
- avahi-daemon: Fix a crash when txt records have an empty value in .xml
service files
- avahi-daemon: reflector: do not incorrectly cache responses on outgoing
interfaces. Previously we would incorrectly cache responses reflected
from
one interface on the outgoing interface. These responses were later
sent to
clients on that network even if the original client had disappeared
and could
cause those clients to have a hostname conflict with themselves on
restart.
We no longer incorrectly cache such traffic.
Security Fixes:
- Drop legacy unicast queries from address not on local link which can
lead to
UDP traffic amplification attacks (CVE-2017-6519)
API Changes: The avahi-core API and D-Bus API have implemented a new API
where
a call to the "New" method can now be split into a "Prepare" and then
"Start"
method for some objects. The previous "New" API is still fully supported and
there is no intention to deprecate it.
This change affects the the following objects: AsyncAddressResolver,
AsyncHostNameResolver, AsyncServiceResolver, DomainBrowser, RecordBrowser,
ServiceBrowser, ServiceTypeBrowser
This is because the D-Bus implementation in some languages would only
bind to
signals of an object after it was created and had received the new object's
path. This led to such languages missing the initial results sent
between the
time the object was created and it had setup a filter to receive it's
signals.
This primarily occured in languages that create dynamic bindings for D-Bus
objects using introspection such as Python. The avahi-client C api was not
affected as it globally binds to all avahi signals without specifying
individual object paths and still makes use of the V1 API.
The v2 Prepare/Start API is available under the new
org.freedesktop.Avahi.Server2 D-Bus interface and also has corresponding
avahi_s_* calls for users of the embedded avahi-core library.
The old org.freedesktop.Avahi.Server interface is still supported and
there is
no intention to remove this API. Additionally this problem has also been
solved
for old clients by adding a very small 10ms delay before we start sending
results to give the client time to bind to the signals which should silently
fix the issue in most cases without introducing a noticable or impactful
delay.
Clients implementing the new org.freedesktop.Avahi.Server2 D-Bus
interface will
not work with older Avahi daemons. It is suggested that clients may wish to
either check for and fallback to the older API version, or continue to
use the
OLD API and rely on the 10ms timer to resolve the issue.
Big thank-you to everyone contributing to the project through issues & pull
requests, including the the following people who contributed changes to this
release: Daniel S, David Kerr, Eric Bischoff, James Rudd, Jan Alexander
Steffens (heftig), Karl Cronburg, Krzesimir Nowak, Mario Blättermann, Martin
Blanchard, Michal Sekletar, msk-nightingale, Philip Prindeville, Piotr Drąg,
Rafael Fontenelle, scootergrisen, Simon Lauser, Simon McVittie, Thomas
Jollans,
Till Kamppeter, Tony Garnock-Jones, Trent Lloyd, wisd0me, Yclept Nemo,
Zlopez,
Дамјан Георгиевски.
This release is backwards compatible with Avahi 0.6.x and 0.7.
Downloads are available from:
https://github.com/lathiat/avahi/releases/tag/v0.8
http://avahi.org
More information about the avahi
mailing list