summaryrefslogtreecommitdiffhomepage
path: root/Network/DNS/Lookup.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Network/DNS/Lookup.hs')
-rw-r--r--Network/DNS/Lookup.hs13
1 files changed, 13 insertions, 0 deletions
diff --git a/Network/DNS/Lookup.hs b/Network/DNS/Lookup.hs
index 728b0c6..b47c0d5 100644
--- a/Network/DNS/Lookup.hs
+++ b/Network/DNS/Lookup.hs
@@ -7,6 +7,7 @@ module Network.DNS.Lookup (
, lookupMX, lookupAviaMX, lookupAAAAviaMX
, lookupTXT
, lookupPTR
+ , lookupSRV
) where
import Control.Applicative
@@ -95,3 +96,15 @@ lookupPTR rlv dom = toPTR <$> DNS.lookup rlv dom PTR
toPTR = maybe Nothing (Just . map unTag)
unTag (RD_PTR dm) = dm
unTag _ = error "lookupPTR"
+
+----------------------------------------------------------------
+
+{-|
+ Resolving 'Domain' and its preference by 'SRV'.
+-}
+lookupSRV :: Resolver -> Domain -> IO (Maybe [(Int,Int,Int,Domain)])
+lookupSRV rlv dom = toSRV <$> DNS.lookup rlv dom SRV
+ where
+ toSRV = maybe Nothing (Just . map unTag)
+ unTag (RD_SRV pri wei prt dm) = (pri,wei,prt,dm)
+ unTag _ = error "lookupSRV"