summaryrefslogtreecommitdiffhomepage
path: root/Network/DNS/Response.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Network/DNS/Response.hs')
-rw-r--r--Network/DNS/Response.hs15
1 files changed, 8 insertions, 7 deletions
diff --git a/Network/DNS/Response.hs b/Network/DNS/Response.hs
index 898b838..c62f497 100644
--- a/Network/DNS/Response.hs
+++ b/Network/DNS/Response.hs
@@ -5,23 +5,24 @@ import Data.Bits
import qualified Data.ByteString.Lazy.Char8 as L
import Data.Char
import Data.IP
-import Network.DNS.StateBinary
+import Data.Maybe
import Network.DNS.Internal
+import Network.DNS.StateBinary
----------------------------------------------------------------
parseResponse :: L.ByteString -> DNSFormat
-parseResponse bs = runSGet decodeResponse bs
+parseResponse = runSGet decodeResponse
----------------------------------------------------------------
decodeResponse :: SGet DNSFormat
decodeResponse = do
hd <- decodeHeader
- DNSFormat hd <$> (decodeQueries $ qdCount hd)
- <*> (decodeRRs $ anCount hd)
- <*> (decodeRRs $ nsCount hd)
- <*> (decodeRRs $ arCount hd)
+ DNSFormat hd <$> decodeQueries (qdCount hd)
+ <*> decodeRRs (anCount hd)
+ <*> decodeRRs (nsCount hd)
+ <*> decodeRRs (arCount hd)
----------------------------------------------------------------
@@ -136,7 +137,7 @@ decodeDomain = do
then do
d <- getInt8
let offset = n * 256 + d
- maybe (error $ "decodeDomain: " ++ show offset) id <$> pop offset
+ fromMaybe (error $ "decodeDomain: " ++ show offset) <$> pop offset
else do
hs <- decodeString n
ds <- decodeDomain