Hi, I announce EM-Udns (gem version 0.2.3):
EM-Udns is an async DNS resolver for EventMachine based on udns C
library. Having most of the code written in C, EM-Udns becomes very
fast. It can resolve DNS A, AAAA, PTR, MX, TXT, SRV and NAPTR records,
and can handle every kind of errors (domain/record not found, request
timeout, malformed response…).
The project in Github, including the README file:
GitHub - ibc/em-udns: An async DNS resolver for EventMachine based on the udns C library
Important changes in 0.2.X releases are:
-
No exception is raised when performing a query (which is not
friendly within EventMachine), even if an error occurs (such a
malformed domain name or internal error). Instead
EM::Deferrable#errback (in EM::Udns::Query object) is called with new
error arguments (a Ruby Symbol):- :dns_error_nxdomain - The domain name does not exist.
- :dns_error_nodata - The domain exists, but has no data of requested
type. - :dns_error_tempfail - Temporary error, the resolver nameserver was
not
able to process our query or timed
out. - :dns_error_protocol - Protocol error, a nameserver returned
malformed
reply. - :dns_error_badquery - Bad query, name of dn is invalid.
- :dns_error_nomem - No memory available to allocate query structure.
- :dns_error_unknown - An unknown error has occurred.