1 -- | Helpers to perform DNS queries.
8 import Control.Concurrent.ParallelIO.Global ( parallel )
19 -- The return type of lookupRDNS.
20 type PTRResult = Either DNSError [Domain]
23 -- | Take the default ResolvConf and increase the timeout to 15
25 our_resolv_conf :: ResolvConf
27 defaultResolvConf { resolvTimeout = 15*1000*1000 } -- 15s
30 -- | Takes a list of IP addresses (as ByteStrings) and performs
31 -- reverse (PTR) lookups on each of them.
32 lookup_ptrs :: [Domain] -> IO [PTRResult]
34 rs <- makeResolvSeed our_resolv_conf
35 let lookup' addr = withResolver rs $ \resolver ->
36 lookupRDNS resolver addr
38 parallel $ map lookup' ips