[crux-commits] ports/compat-32 (3.6): avahi-32: fix source and fix a race condition in IPv6

crux at crux.nu crux at crux.nu
Fri Feb 19 11:32:09 UTC 2021


commit 5dfb2078d211a47686f7e8c4071ad57624e15b6b
Author: Danny Rawlins <contact at romster.me>
Date:   Fri Feb 19 22:32:03 2021 +1100

    avahi-32: fix source and fix a race condition in IPv6

diff --git a/avahi-32/.signature b/avahi-32/.signature
index 8f0bb3d..c6d138c 100644
--- a/avahi-32/.signature
+++ b/avahi-32/.signature
@@ -1,6 +1,7 @@
 untrusted comment: verify with /etc/ports/compat-32.pub
-RWSwxGo/zH7eXRE3eJZ0NvaW1J/tOn3Y6sA17mlx4YgSEjI1P2bGYOlHTMNk5Sj2T+wMsuk5381GQXYJEjSXMFZiIza6ERLNuw0=
-SHA256 (Pkgfile) = 5943f1254a7dfff2fc514d51634e544e8bfed9c669c7db8de4917025e4be48ff
+RWSwxGo/zH7eXZ7Thl9iGG5oeFKGcyp23d/3BRA9LPmwK9hoJ7ST4+FM6n+KaiI45pCNN2sG1C7/3ebNo/WAhY+22H8T2Hl2xQo=
+SHA256 (Pkgfile) = 217f28b57408d98b7f36bb5d41710740c40e76cf5d6ac3307b7c82d6a9028c6b
 SHA256 (.footprint) = 72baed23d6e6598de90dec8a3db81f29cb89850df72c2db38afa392e5d9089da
 SHA256 (avahi-0.8.tar.gz) = 060309d7a333d38d951bc27598c677af1796934dbd98e1024e7ad8de798fedda
+SHA256 (avahi-0.8-ipv6_race_condition_fix-1.patch) = 218c909581d0ca2c86c8145bb0797050d987a6b0ae3417949dbe2a6d55c49360
 SHA256 (reverse-move-to-run.patch) = a333bcf15dd3e72ac99b2e883202e7170d2ff27bf61820413235bc9f3c9c2605
diff --git a/avahi-32/Pkgfile b/avahi-32/Pkgfile
index 8c78770..575a9b8 100644
--- a/avahi-32/Pkgfile
+++ b/avahi-32/Pkgfile
@@ -1,18 +1,20 @@
 # Description: A system which facilitates service discovery on a local network via the mDNS/DNS-SD protocol suite
-# URL: http://www.avahi.org/
+# URL: https://www.avahi.org/
 # Maintainer: CRUX compat-32 Team, compat-32-ports at crux dot nu
 # Depends on: avahi dbus-32 gdbm-32 glib-32 libcap-32 libdaemon-32 libevent-32
 
 name=avahi-32
 version=0.8
-release=1
-source=(https://avahi.org/download/avahi-$version.tar.gz
+release=3
+source=(https://github.com/lathiat/avahi/releases/download/v$version/avahi-$version.tar.gz
+	avahi-0.8-ipv6_race_condition_fix-1.patch
 	reverse-move-to-run.patch)
 
 build() {
 	cd avahi-$version
 
 	patch -p1 -i $SRC/reverse-move-to-run.patch
+	patch -p1 -i $SRC/avahi-0.8-ipv6_race_condition_fix-1.patch
 
 	NOCONFIGURE=1 ./autogen.sh
 
diff --git a/avahi-32/avahi-0.8-ipv6_race_condition_fix-1.patch b/avahi-32/avahi-0.8-ipv6_race_condition_fix-1.patch
new file mode 100644
index 0000000..3418b1a
--- /dev/null
+++ b/avahi-32/avahi-0.8-ipv6_race_condition_fix-1.patch
@@ -0,0 +1,51 @@
+Submitted By:            Douglas R. Reno <renodr at linuxfromscratch dot org>
+Date:                    2020-10-19
+Initial Package Version: 0.8
+Upstream Status:         PR, not applied
+Origin:                  Upstream PR (github.com/lathiat/avahi/pull/309)
+Description:             Fixes a race condition when multiple NICs are in use
+                         when IPv6 is enabled. This will exhibit behavior where
+                         messages about withdrawing address records, registering
+                         access records, and new hostname announcements are
+                         spammed to the log every second.
+
+diff -Naurp avahi-0.8.orig/avahi-core/server.c avahi-0.8/avahi-core/server.c
+--- avahi-0.8.orig/avahi-core/server.c	2020-02-16 21:41:24.939967558 -0600
++++ avahi-0.8/avahi-core/server.c	2020-10-19 11:07:22.054861721 -0500
+@@ -193,7 +193,7 @@ static void withdraw_rrset(AvahiServer *
+         withdraw_entry(s, e);
+ }
+ 
+-static void incoming_probe(AvahiServer *s, AvahiRecord *record, AvahiInterface *i) {
++static void incoming_probe(AvahiServer *s, AvahiRecord *record, AvahiInterface *i, int from_local_iface) {
+     AvahiEntry *e, *n;
+     int ours = 0, won = 0, lost = 0;
+ 
+@@ -210,7 +210,7 @@ static void incoming_probe(AvahiServer *
+         if (e->dead)
+             continue;
+ 
+-        if ((cmp = avahi_record_lexicographical_compare(e->record, record)) == 0) {
++        if ((cmp = avahi_record_lexicographical_compare(e->record, record)) == 0 || from_local_iface) {
+             ours = 1;
+             break;
+         } else {
+@@ -639,7 +639,7 @@ static void handle_query_packet(AvahiSer
+             if (!avahi_key_is_pattern(record->key)) {
+                 if (!from_local_iface)
+                     reflect_probe(s, i, record);
+-                incoming_probe(s, record, i);
++                incoming_probe(s, record, i, from_local_iface);
+             }
+ 
+             avahi_record_unref(record);
+@@ -961,8 +961,7 @@ static void dispatch_packet(AvahiServer
+         return;
+ 
+     /* We don't want to reflect local traffic, so we check if this packet is generated locally. */
+-    if (s->config.enable_reflector)
+-        from_local_iface = originates_from_local_iface(s, iface, src_address, port);
++    from_local_iface = originates_from_local_iface(s, iface, src_address, port);
+ 
+     if (avahi_dns_packet_check_valid_multicast(p) < 0) {
+         avahi_log_debug("Received invalid packet.");


More information about the crux-commits mailing list