Safe Haskell | None |
---|
Caching asynchronous DNS resolver built on top of GNU ADNS http://www.chiark.greenend.org.uk/~ian/adns/.
- Resolves several IP addresses for one host (if available) in round-robin fashion.
- Limits number of parallel requests (so DNS resolving continues to work even under heavy load).
- Errors are cached too (for one minute).
- Handles CNAMEs (
hsdns
returns error for them).
You should link your program with the threaded runtime-system
when using this module. In GHC, this is accomplished by specifying -threaded
on the command-line.
This cache is tested in a long running web-crawler (used in http://bazqux.com) so it should be safe to use it in real world applications.
- data DnsCache
- withDnsCache :: (DnsCache -> IO a) -> IO a
- stopDnsCache :: DnsCache -> IO ()
- resolveA :: DnsCache -> HostName -> IO (Either String HostAddress)
- showHostAddress :: HostAddress -> String
DNS cache
withDnsCache :: (DnsCache -> IO a) -> IO aSource
Create cache and run action passed.
stopDnsCache :: DnsCache -> IO ()Source
Wait till all running resolvers are finished and block further resolvers.
DNS lookup
Utils
showHostAddress :: HostAddress -> StringSource
Show HostAddress
in standard 123.45.67.89 format.
Unlike inet_ntoa
this function is pure and thread-safe.