9 import Control.Monad (liftM)
10 import qualified Data.ByteString.Char8 as BS (
15 import Data.Char (toLower)
22 type LookupResult = (Domain, Maybe [Domain])
24 lookupMX' :: Resolver -> Domain -> IO LookupResult
25 lookupMX' resolver domain =
26 liftM (pair_em . drop_priority) $ lookupMX resolver domain
28 drop_priority :: Maybe [(Domain, Int)] -> Maybe [Domain]
29 drop_priority = fmap (map fst)
31 pair_em :: a -> (Domain, a)
34 -- This function keeps the domain matches with its NS records.
35 lookupNS' :: Resolver -> Domain -> IO LookupResult
36 lookupNS' resolver domain =
37 liftM pair_em $ lookupNS resolver domain
39 pair_em :: a -> (Domain, a)
42 -- | Normalize the given name by lowercasing and appending a trailing
43 -- dot (the root) if necessary.
44 normalize :: Domain -> Domain
45 normalize = normalize_case . normalize_root
48 normalize_root :: Domain -> Domain
50 | BS.last d == '.' = d
51 | otherwise = d `BS.append` trailing_dot
53 trailing_dot = BS.pack "."
56 normalize_case :: Domain -> Domain
57 normalize_case = BS.map toLower