diff options
author | Robby Workman | 2020-11-30 09:57:00 +0100 |
---|---|---|
committer | Willy Sudiarto Raharjo | 2020-12-06 01:59:42 +0100 |
commit | e5f3733e5542ab31834d06ea5a37b5a5562be6e7 (patch) | |
tree | c135aac10933988e55d2601da033b75be60ac978 /network/avahi/ipv6_race_condition_fix.patch | |
parent | f3ee13c19336bd949e2ec83a3e9333011d144843 (diff) | |
download | slackbuilds-e5f3733e5542ab31834d06ea5a37b5a5562be6e7.tar.gz |
network/avahi: Updated for version 0.8.
Signed-off-by: Robby Workman <rworkman@slackbuilds.org>
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'network/avahi/ipv6_race_condition_fix.patch')
-rw-r--r-- | network/avahi/ipv6_race_condition_fix.patch | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/network/avahi/ipv6_race_condition_fix.patch b/network/avahi/ipv6_race_condition_fix.patch new file mode 100644 index 0000000000..3418b1a11c --- /dev/null +++ b/network/avahi/ipv6_race_condition_fix.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."); |