GnuPG has its own DNS resolver. This is used to implement DNS-based features which we don't support:
SRV records for SKS keyserver pools (we will just rely on DNS A/AAAA records or switch to more reliable keyservers such as pgp.mit.edu or other alternatives)
DNS-based key retrieval (PKA, DNS CERT, OPENPGPKEYS), which have been removed for lack of adoption
WKD requires looking up a SRV record, because many email domains can be mapped to a single webserver domain. We have removed WKD for now. A plugin supporting it would have to find its own way to look up DNS entries.
Because of this reliance on DNS features, GnuPG also requires special support for Tor, and can't use the simple SOCKS5H feature which does transparent DNS lookup for HTTP requests only. Also, GnuPG has its own DNS resolver to work over Tor (using TCP, not UDP, etc).
There are other support costs. Because GnuPG does its own DNS lookups, it needs to be aware of changes to the nameserver configuration (which is platform specific), otherwise dirmngr needs to be restarted when roaming to a different network.
All of these features are intermingled in GnuPG, architectural and in the actual implementation. Dropping these features allows NeoPG to be "normal" in that it does simple HTTP/HTTPS lookups, optionally over a proxy (which can be a Tor SOCKS5H) proxy. No special configuration is needed, and the default operating system features are used. There will be another PR to remove tor mode.
All of this is also a precursor to eliminating libgpg-error and its I/O library.
GnuPG has its own DNS resolver. This is used to implement DNS-based features which we don't support:
All of these features are intermingled in GnuPG, architectural and in the actual implementation. Dropping these features allows NeoPG to be "normal" in that it does simple HTTP/HTTPS lookups, optionally over a proxy (which can be a Tor SOCKS5H) proxy. No special configuration is needed, and the default operating system features are used. There will be another PR to remove tor mode.
All of this is also a precursor to eliminating libgpg-error and its I/O library.