1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2025-03-11 04:58:19 +03:00

resolved: Fall back to TCP if UDP is blocked

If UDP is blocked on the system (e.g. by iptables or BPF), the kernel will
return EPERM on some or all of the system calls (connect, sendmsg, etc.).
In this case, try to fall back to TCP, which hopefully will not be blocked.

(cherry picked from commit 3dd6336ad0cb40e928745404ed72c41e4ac9c39e)
This commit is contained in:
Joan Bruguera 2023-02-12 20:06:08 +00:00 committed by Zbigniew Jędrzejewski-Szmek
parent 477fdc5afe
commit a88e35bf95

View File

@ -2079,7 +2079,9 @@ int dns_transaction_go(DnsTransaction *t) {
log_debug("Sending query via TCP since it is too large.");
else if (r == -EAGAIN)
log_debug("Sending query via TCP since UDP isn't supported or DNS-over-TLS is selected.");
if (IN_SET(r, -EMSGSIZE, -EAGAIN))
else if (r == -EPERM)
log_debug("Sending query via TCP since UDP is blocked.");
if (IN_SET(r, -EMSGSIZE, -EAGAIN, -EPERM))
r = dns_transaction_emit_tcp(t);
}
if (r == -ELOOP) {