-
Notifications
You must be signed in to change notification settings - Fork 27
Open
Labels
Description
Plugin version 3.1.4 (and bellow) will likely run into issues with DNS records >~ 65.500 bytes.
Description of the problem including expected versus actual behavior
DNS primarily uses UDP and a response usually fits into a UDP datagram.
However, in rare cases the payload might be bigger than 65k, in which case the Resolv library will attempt to do a TCP fallback. This fallback mechanism has a bug when multiple name-servers are involved in a query.
There's no actual reproducer but here's what I assume happens :
- with multiple nameservers we setup a UDP sender
- the sender is supposed to "cache" UDP sockets (in case we try multiple servers)
- the UDP (from a given server) packet we get back is detected as too big
- switch over to trying a TCP sender next
(the problem is the TCP sender does not share the original assumption of "caching" multiple sockets) - the same server is tried over TCP - perhaps fails (or timeouts)
- we carry on trying the next name-server from the list using the same TCP sender
(the TCP sender detects a different IP/port and fails with thehost/port don't match: ...error)
Provide logs (if relevant): N/A 3.1.4 did not have backtrace/class logging for unknown errors.
DNS: Unexpected Error.
Seems to be a known upstream Resolv bug: https://bugs.ruby-lang.org/issues/8285