1
0
mirror of https://github.com/samba-team/samba.git synced 2025-08-03 04:22:09 +03:00

s3/libsmb: check the negative-conn-cache in resolve_ads()

This way we throw away blacklisted servers right away when learning about them
from the DNS SRV query.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=14981

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Guenther Deschner <gd@samba.org>

Autobuild-User(master): Günther Deschner <gd@samba.org>
Autobuild-Date(master): Wed Jul 30 10:10:21 UTC 2025 on atb-devel-224
This commit is contained in:
Ralph Boehme
2025-07-03 18:42:04 +02:00
committed by Günther Deschner
parent 5217bd1a23
commit c1ee6fe9a4

View File

@ -2617,6 +2617,14 @@ static NTSTATUS resolve_ads(TALLOC_CTX *ctx,
for(i = 0; i < numdcs; i++) {
/* Copy all the IP addresses from the SRV response */
size_t j;
status = check_negative_conn_cache(name, dcs[i].hostname);
if (!NT_STATUS_IS_OK(status)) {
DBG_DEBUG("Skipping blacklisted server [%s] "
"for domain [%s]", dcs[i].hostname, name);
continue;
}
for (j = 0; j < dcs[i].num_ips; j++) {
char addr[INET6_ADDRSTRLEN];
@ -2625,12 +2633,19 @@ static NTSTATUS resolve_ads(TALLOC_CTX *ctx,
continue;
}
print_sockaddr(addr,
sizeof(addr),
&srv_addrs[num_srv_addrs]);
DBG_DEBUG("SRV lookup %s got IP[%zu] %s\n",
name,
j,
print_sockaddr(addr,
sizeof(addr),
&srv_addrs[num_srv_addrs]));
name, j, addr);
status = check_negative_conn_cache(name, addr);
if (!NT_STATUS_IS_OK(status)) {
DBG_DEBUG("Skipping blacklisted server [%s] "
"for domain [%s]", addr, name);
continue;
}
num_srv_addrs++;
}