9 import qualified Data.ByteString.Char8 as BS (
14 import Data.Char (toLower)
21 type LookupResult = (Domain, Maybe [Domain])
23 lookupMX' :: Resolver -> Domain -> IO LookupResult
24 lookupMX' resolver domain =
25 lookupMX resolver domain >>= return . pair_em . drop_priority
27 drop_priority :: Maybe [(Domain, Int)] -> Maybe [Domain]
28 drop_priority = fmap (map fst)
30 pair_em :: a -> (Domain, a)
33 -- This function keeps the domain matches with its NS records.
34 lookupNS' :: Resolver -> Domain -> IO LookupResult
35 lookupNS' resolver domain =
36 lookupNS resolver domain >>= return . pair_em
38 pair_em :: a -> (Domain, a)
41 -- | Normalize the given name by lowercasing and appending a trailing
42 -- dot (the root) if necessary.
43 normalize :: Domain -> Domain
44 normalize = normalize_case . normalize_root
47 normalize_root :: Domain -> Domain
49 | BS.last d == '.' = d
50 | otherwise = d `BS.append` trailing_dot
52 trailing_dot = BS.pack "."
55 normalize_case :: Domain -> Domain
56 normalize_case = BS.map toLower