From 7752c6fe4f58e34638afea08d6d0ae20ecf84566 Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Tue, 29 Sep 2020 11:48:03 +0200 Subject: [PATCH] dns: slightly refactor rebuild_domain_lists() Centralize wildcard domain assignment in a single place. (cherry picked from commit e05550c34c612136839942010c8c341d14154f32) (cherry picked from commit 25de8a6a25962f6608d509cfc9a101afdd3c54d9) --- src/dns/nm-dns-manager.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/dns/nm-dns-manager.c b/src/dns/nm-dns-manager.c index 666bad60ca..207e2e7dfe 100644 --- a/src/dns/nm-dns-manager.c +++ b/src/dns/nm-dns-manager.c @@ -1299,7 +1299,7 @@ rebuild_domain_lists (NMDnsManager *self) { NMDnsIPConfigData *ip_data; gs_unref_hashtable GHashTable *ht = NULL; - gboolean default_route_found = FALSE; + gs_unref_hashtable GHashTable *wildcard_entries = NULL; CList *head; head = _ip_config_lst_head (self); @@ -1309,8 +1309,9 @@ rebuild_domain_lists (NMDnsManager *self) if (!nm_ip_config_get_num_nameservers (ip_config)) continue; if (nm_ip_config_best_default_route_get (ip_config)) { - default_route_found = TRUE; - break; + if (!wildcard_entries) + wildcard_entries = g_hash_table_new (nm_direct_hash, NULL); + g_hash_table_add (wildcard_entries, ip_data); } } @@ -1345,13 +1346,13 @@ rebuild_domain_lists (NMDnsManager *self) /* Add wildcard lookup domain to connections with the default route. * If there is no default route, add the wildcard domain to all non-VPN * connections */ - if (default_route_found) { + if (wildcard_entries) { /* FIXME: this heuristic of which device has a default route does * not work with policy routing (as used by default with WireGuard). * We should have a more stable mechanism where an NMIPConfig indicates * whether it is suitable for certain operations (like having an automatically * added "~" domain). */ - if (nm_ip_config_best_default_route_get (ip_config)) + if (g_hash_table_contains (wildcard_entries, ip_data)) domains[num_dom1++] = "~"; } else { if (ip_data->ip_config_type != NM_DNS_IP_CONFIG_TYPE_VPN)