fixup! Correct releasing of serv_domain
Ensure correct domain entries are prepared also for DBus specified domains. Initialize server_domain when adding new nameserver, no matter what is its source. Do not wait for check_servers() to domain initialization. Resolves: rhbz#2188712
This commit is contained in:
parent
9c7ec692aa
commit
73f4c86bcc
83
dnsmasq-2.85-serv_domain-rh2186481-2.patch
Normal file
83
dnsmasq-2.85-serv_domain-rh2186481-2.patch
Normal file
@ -0,0 +1,83 @@
|
||||
From 4650d0aef20db4b7e129895ffcb93ca4609e6347 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Petr=20Men=C5=A1=C3=ADk?= <pemensik@redhat.com>
|
||||
Date: Wed, 10 May 2023 12:57:17 +0200
|
||||
Subject: [PATCH] fixup! Correct releasing of serv_domain
|
||||
|
||||
---
|
||||
src/dnsmasq.h | 2 +-
|
||||
src/network.c | 20 +++++++++++---------
|
||||
2 files changed, 12 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/src/dnsmasq.h b/src/dnsmasq.h
|
||||
index b6dcc50..c62c3d0 100644
|
||||
--- a/src/dnsmasq.h
|
||||
+++ b/src/dnsmasq.h
|
||||
@@ -1405,7 +1405,7 @@ int fix_fd(int fd);
|
||||
int tcp_interface(int fd, int af);
|
||||
int set_ipv6pktinfo(int fd);
|
||||
struct server_domain *server_domain_find_domain(const char *domain);
|
||||
-struct server_domain *server_domain_new(struct server *serv);
|
||||
+void server_domain_new(struct server *serv);
|
||||
#ifdef HAVE_DHCP6
|
||||
void join_multicast(int dienow);
|
||||
#endif
|
||||
diff --git a/src/network.c b/src/network.c
|
||||
index 8152cac..e42220c 100644
|
||||
--- a/src/network.c
|
||||
+++ b/src/network.c
|
||||
@@ -1653,6 +1653,7 @@ void add_update_server(int flags,
|
||||
serv->addr = *addr;
|
||||
if (source_addr)
|
||||
serv->source_addr = *source_addr;
|
||||
+ server_domain_new(serv);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1680,14 +1681,20 @@ struct server_domain *server_domain_find_domain(const char *domain)
|
||||
/**< Test structure has already set domain pointer.
|
||||
*
|
||||
* If not, create a new record. */
|
||||
-struct server_domain *server_domain_new(struct server *serv)
|
||||
+void server_domain_new(struct server *serv)
|
||||
{
|
||||
struct server_domain *sd;
|
||||
+ const char *domain = server_get_domain(serv);
|
||||
|
||||
- if ((sd = whine_malloc(sizeof(struct server_domain))))
|
||||
+ sd = server_domain_find_domain(domain);
|
||||
+ if (sd)
|
||||
{
|
||||
- const char *domain = server_get_domain(serv);
|
||||
+ serv->serv_domain = sd;
|
||||
+ return;
|
||||
+ }
|
||||
|
||||
+ if ((sd = whine_malloc(sizeof(struct server_domain))))
|
||||
+ {
|
||||
/* Ensure all serv->domain values have own record in server_domain.
|
||||
* Add a new record. */
|
||||
if (domain)
|
||||
@@ -1701,7 +1708,6 @@ struct server_domain *server_domain_new(struct server *serv)
|
||||
serv->serv_domain = sd;
|
||||
daemon->server_domains = sd;
|
||||
}
|
||||
- return sd;
|
||||
}
|
||||
|
||||
/**< Test structure has already set domain pointer.
|
||||
@@ -1714,11 +1720,7 @@ static void server_domain_check(struct server *serv)
|
||||
if (sd)
|
||||
sd->flags &= (~SERV_MARK); /* found domain, mark active */
|
||||
else
|
||||
- {
|
||||
- sd = server_domain_find_domain(serv->domain);
|
||||
- if (!sd)
|
||||
- server_domain_new(serv);
|
||||
- }
|
||||
+ server_domain_new(serv);
|
||||
}
|
||||
|
||||
void check_servers(void)
|
||||
--
|
||||
2.40.1
|
||||
|
@ -20,7 +20,7 @@
|
||||
|
||||
Name: dnsmasq
|
||||
Version: 2.85
|
||||
Release: 9%{?extraversion:.%{extraversion}}%{?dist}
|
||||
Release: 10%{?extraversion:.%{extraversion}}%{?dist}
|
||||
Summary: A lightweight DHCP/caching DNS server
|
||||
|
||||
License: GPLv2 or GPLv3
|
||||
@ -59,6 +59,9 @@ Patch10: dnsmasq-2.85-serv_domain-rh2186481.patch
|
||||
# Downstream only patch; https://bugzilla.redhat.com/show_bug.cgi?id=2182342
|
||||
# Another issue in Patch4
|
||||
Patch11: dnsmasq-2.85-search_servers-rhbz2182342.patch
|
||||
# Downstream only patch; https://bugzilla.redhat.com/show_bug.cgi?id=2186481
|
||||
# complements patch10
|
||||
Patch12: dnsmasq-2.85-serv_domain-rh2186481-2.patch
|
||||
|
||||
# This is workaround to nettle bug #1549190
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1549190
|
||||
@ -202,6 +205,9 @@ install -Dpm 644 %{SOURCE2} %{buildroot}%{_sysusersdir}/%{name}.conf
|
||||
%{_mandir}/man1/dhcp_*
|
||||
|
||||
%changelog
|
||||
* Wed May 10 2023 Petr Menšík <pemensik@redhat.com> - 2.85-10
|
||||
- Fix also dynamically set resolvers over dbus (#2186481)
|
||||
|
||||
* Fri May 05 2023 Petr Menšík <pemensik@redhat.com> - 2.85-9
|
||||
- Properly initialize domain parameter in dnssec mode (#2182342)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user