systemd/backport-resolved-fix-ResolveService-hostname-handling.patch

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