48 lines
1.7 KiB
Diff
48 lines
1.7 KiB
Diff
From 70f465cb5d10b7bcd7bd7c326756d542e59c0e0b Mon Sep 17 00:00:00 2001
|
|
From: Lennart Poettering <lennart@poettering.net>
|
|
Date: Mon, 22 Nov 2021 14:37:54 +0100
|
|
Subject: [PATCH] resolved: fix ResolveService() hostname handling
|
|
|
|
Let's eat up special returns of dns_query_process_cname_many() when
|
|
storing hostname resolution results.
|
|
|
|
The rest of the code assumes only == 0 means success and != 0 means
|
|
error, but so far > 0 also could mean success, let's fix that.
|
|
|
|
Fixes: #21365 #21140
|
|
|
|
(This was originally broken in 1db8e6d1db0880de240e5598e28d24d708479434)
|
|
|
|
(cherry picked from commit 5a78106ad92d3f122f7ac653eecf767f0a8948cf)
|
|
|
|
Conflict:NA
|
|
Reference:https://github.com/systemd/systemd/commit/70f465cb5d10b7bcd7bd7c326756d542e59c0e0b
|
|
---
|
|
src/resolve/resolved-bus.c | 3 ++-
|
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/src/resolve/resolved-bus.c b/src/resolve/resolved-bus.c
|
|
index 7226200f00..78d1acf5e0 100644
|
|
--- a/src/resolve/resolved-bus.c
|
|
+++ b/src/resolve/resolved-bus.c
|
|
@@ -1005,6 +1005,7 @@ static void resolve_service_all_complete(DnsQuery *q) {
|
|
goto finish;
|
|
}
|
|
|
|
+ assert(bad->auxiliary_result < 0);
|
|
r = bad->auxiliary_result;
|
|
goto finish;
|
|
}
|
|
@@ -1112,7 +1113,7 @@ static void resolve_service_hostname_complete(DnsQuery *q) {
|
|
return;
|
|
|
|
/* This auxiliary lookup is finished or failed, let's see if all are finished now. */
|
|
- q->auxiliary_result = r;
|
|
+ q->auxiliary_result = r < 0 ? r : 0;
|
|
resolve_service_all_complete(q->auxiliary_for);
|
|
}
|
|
|
|
--
|
|
2.33.0
|
|
|