dns 1.2.0 → 1.2.1
raw patch · 7 files changed
+90/−85 lines, 7 filesdep +conduit-extradep +resourcetdep −network-conduitdep ~conduit
Dependencies added: conduit-extra, resourcet
Dependencies removed: network-conduit
Dependency ranges changed: conduit
Files
- Network/DNS/Decode.hs +9/−8
- Network/DNS/Encode.hs +12/−11
- Network/DNS/Internal.hs +3/−3
- Network/DNS/Lookup.hs +2/−2
- Network/DNS/Resolver.hs +11/−11
- Network/DNS/StateBinary.hs +43/−43
- dns.cabal +10/−7
Network/DNS/Decode.hs view
@@ -5,17 +5,18 @@ , receive ) where -import Control.Applicative-import Control.Monad-import Data.Bits+import Control.Applicative ((<$), (<$>), (<*), (<*>))+import Control.Monad (replicateM)+import Control.Monad.Trans.Resource (ResourceT, runResourceT)+import Data.Bits ((.&.), shiftR, testBit) import Data.ByteString (ByteString) import qualified Data.ByteString.Char8 as BS import qualified Data.ByteString.Lazy as BL-import Data.Conduit-import Data.Conduit.Network-import Data.IP-import Data.Maybe-import Network+import Data.Conduit (($$), Source)+import Data.Conduit.Network (sourceSocket)+import Data.IP (toIPv4, toIPv6)+import Data.Maybe (fromMaybe)+import Network (Socket) import Network.DNS.Internal import Network.DNS.StateBinary
Network/DNS/Encode.hs view
@@ -5,16 +5,17 @@ , composeQuery ) where -import qualified Blaze.ByteString.Builder as BB (toByteString, fromWrite, writeInt16be)-import qualified Data.ByteString.Lazy.Char8 as BL (ByteString)-import qualified Data.ByteString.Char8 as BS (length, null, break, drop)-import Network.DNS.StateBinary+import qualified Blaze.ByteString.Builder as BB+import Control.Monad (when)+import Control.Monad.State (State, modify, execState, gets)+import Data.Binary (Word16)+import Data.Bits ((.|.), bit, shiftL)+import qualified Data.ByteString.Char8 as BS+import Data.ByteString.Lazy.Char8 (ByteString)+import Data.IP (fromIPv4, fromIPv6)+import Data.Monoid (Monoid, mappend, mconcat) import Network.DNS.Internal-import Data.Monoid-import Control.Monad.State-import Data.Bits-import Data.Word-import Data.IP+import Network.DNS.StateBinary (+++) :: Monoid a => a -> a -> a (+++) = mappend@@ -23,7 +24,7 @@ -- | Composing query. First argument is a number to identify response. -composeQuery :: Int -> [Question] -> BL.ByteString+composeQuery :: Int -> [Question] -> ByteString composeQuery idt qs = encode qry where hdr = header defaultQuery@@ -39,7 +40,7 @@ -- | Composing DNS data. -encode :: DNSFormat -> BL.ByteString+encode :: DNSFormat -> ByteString encode fmt = runSPut (encodeDNSFormat fmt) ----------------------------------------------------------------
Network/DNS/Internal.hs view
@@ -5,9 +5,9 @@ import Control.Exception (Exception) import Data.ByteString (ByteString) import qualified Data.ByteString.Char8 as BS-import Data.Char-import Data.IP-import Data.Maybe+import Data.Char (toUpper)+import Data.IP (IPv4, IPv6)+import Data.Maybe (fromMaybe) import Data.Typeable (Typeable) ----------------------------------------------------------------
Network/DNS/Lookup.hs view
@@ -69,8 +69,8 @@ ) where import Data.ByteString (ByteString)-import qualified Data.ByteString.Char8 as BS (append, intercalate, pack, split)-import Data.IP+import qualified Data.ByteString.Char8 as BS+import Data.IP (IPv4, IPv6) import Network.DNS.Resolver as DNS import Network.DNS.Types
Network/DNS/Resolver.hs view
@@ -17,21 +17,21 @@ , fromDNSFormat ) where -import Control.Applicative-import Control.Exception+import Control.Applicative ((<$>), (<*>), pure)+import Control.Exception (bracket) import qualified Data.ByteString.Char8 as BS-import Data.Char-import Data.Int-import Data.List hiding (find, lookup)-import Network.BSD+import Data.Char (isSpace)+import Data.List (isPrefixOf)+import Network.BSD (getProtocolNumber) import Network.DNS.Decode import Network.DNS.Encode import Network.DNS.Internal-import Network.Socket hiding (send, sendTo, recv, recvFrom)-import Network.Socket.ByteString.Lazy+import Network.Socket (HostName, Socket, SocketType(Datagram), sClose, socket, connect)+import Network.Socket (AddrInfoFlag(..), AddrInfo(..), defaultHints, getAddrInfo)+import Network.Socket.ByteString.Lazy (sendAll) import Prelude hiding (lookup)-import System.Random-import System.Timeout+import System.Random (getStdRandom, randomR)+import System.Timeout (timeout) #if mingw32_HOST_OS == 1 import Network.Socket (send)@@ -159,7 +159,7 @@ withResolvers :: [ResolvSeed] -> ([Resolver] -> IO a) -> IO a withResolvers seeds func = bracket openSockets closeSockets $ \socks -> do mapM_ (uncurry connectSocket) $ zip socks seeds- let resolvs = map (uncurry makeResolver) $ zip seeds socks+ let resolvs = zipWith makeResolver seeds socks func resolvs where openSockets = mapM openSocket seeds
Network/DNS/StateBinary.hs view
@@ -1,28 +1,28 @@ {-# LANGUAGE TypeSynonymInstances, FlexibleInstances #-} module Network.DNS.StateBinary where -import Blaze.ByteString.Builder-import Control.Applicative-import Control.Monad.State-import Data.Attoparsec.ByteString+import Blaze.ByteString.Builder (Write)+import qualified Blaze.ByteString.Builder as BB+import Control.Applicative ((<$>), (<*))+import Control.Monad.State (State, StateT)+import qualified Control.Monad.State as ST+import Control.Monad.Trans.Resource (ResourceT)+import qualified Data.Attoparsec as A import qualified Data.Attoparsec.ByteString.Lazy as AL+import qualified Data.Attoparsec.Types as T import Data.ByteString (ByteString)-import qualified Data.ByteString as BS (unpack, length)-import qualified Data.ByteString.Lazy as BL (ByteString)-import Data.Conduit-import Data.Conduit.Attoparsec-import Data.Int+import qualified Data.ByteString as BS+import qualified Data.ByteString.Lazy as BL+import Data.Conduit (Sink)+import Data.Conduit.Attoparsec (sinkParser) import Data.IntMap (IntMap)-import qualified Data.IntMap as IM (insert, lookup, empty)+import qualified Data.IntMap as IM import Data.Map (Map)-import qualified Data.Map as M (insert, lookup, empty)-import Data.Monoid-import Data.Word+import qualified Data.Map as M+import Data.Monoid (Monoid, mconcat, mappend, mempty)+import Data.Word (Word8, Word16, Word32) import Network.DNS.Types-import Prelude hiding (lookup, take) -import qualified Data.Attoparsec.Types as T (Parser)- ---------------------------------------------------------------- type SPut = State WState Write@@ -40,30 +40,30 @@ mappend a b = mconcat <$> sequence [a, b] put8 :: Word8 -> SPut-put8 = fixedSized 1 writeWord8+put8 = fixedSized 1 BB.writeWord8 put16 :: Word16 -> SPut-put16 = fixedSized 2 writeWord16be+put16 = fixedSized 2 BB.writeWord16be put32 :: Word32 -> SPut-put32 = fixedSized 4 writeWord32be+put32 = fixedSized 4 BB.writeWord32be putInt8 :: Int -> SPut-putInt8 = fixedSized 1 (writeInt8 . fromIntegral)+putInt8 = fixedSized 1 (BB.writeInt8 . fromIntegral) putInt16 :: Int -> SPut-putInt16 = fixedSized 2 (writeInt16be . fromIntegral)+putInt16 = fixedSized 2 (BB.writeInt16be . fromIntegral) putInt32 :: Int -> SPut-putInt32 = fixedSized 4 (writeInt32be . fromIntegral)+putInt32 = fixedSized 4 (BB.writeInt32be . fromIntegral) putByteString :: ByteString -> SPut-putByteString = writeSized BS.length writeByteString+putByteString = writeSized BS.length BB.writeByteString addPositionW :: Int -> State WState () addPositionW n = do- (WState m cur) <- get- put $ WState m (cur+n)+ (WState m cur) <- ST.get+ ST.put $ WState m (cur+n) fixedSized :: Int -> (a -> Write) -> a -> SPut fixedSized n f a = do addPositionW n@@ -75,13 +75,13 @@ wsPop :: Domain -> State WState (Maybe Int) wsPop dom = do- doms <- gets wsDomain+ doms <- ST.gets wsDomain return $ M.lookup dom doms wsPush :: Domain -> Int -> State WState () wsPush dom pos = do- (WState m cur) <- get- put $ WState (M.insert dom pos m) cur+ (WState m cur) <- ST.get+ ST.put $ WState (M.insert dom pos m) cur ---------------------------------------------------------------- @@ -95,39 +95,39 @@ ---------------------------------------------------------------- getPosition :: SGet Int-getPosition = psPosition <$> get+getPosition = psPosition <$> ST.get addPosition :: Int -> SGet () addPosition n = do- PState dom pos <- get- put $ PState dom (pos + n)+ PState dom pos <- ST.get+ ST.put $ PState dom (pos + n) push :: Int -> Domain -> SGet () push n d = do- PState dom pos <- get- put $ PState (IM.insert n d dom) pos+ PState dom pos <- ST.get+ ST.put $ PState (IM.insert n d dom) pos pop :: Int -> SGet (Maybe Domain)-pop n = IM.lookup n . psDomain <$> get+pop n = IM.lookup n . psDomain <$> ST.get ---------------------------------------------------------------- get8 :: SGet Word8-get8 = lift anyWord8 <* addPosition 1+get8 = ST.lift A.anyWord8 <* addPosition 1 get16 :: SGet Word16-get16 = lift getWord16be <* addPosition 2+get16 = ST.lift getWord16be <* addPosition 2 where- word8' = fromIntegral <$> anyWord8+ word8' = fromIntegral <$> A.anyWord8 getWord16be = do a <- word8' b <- word8' return $ a * 256 + b get32 :: SGet Word32-get32 = lift getWord32be <* addPosition 4+get32 = ST.lift getWord32be <* addPosition 4 where- word8' = fromIntegral <$> anyWord8+ word8' = fromIntegral <$> A.anyWord8 getWord32be = do a <- word8' b <- word8'@@ -152,7 +152,7 @@ toInts = map fromIntegral . BS.unpack getNByteString :: Int -> SGet ByteString-getNByteString n = lift (take n) <* addPosition n+getNByteString n = ST.lift (A.take n) <* addPosition n ---------------------------------------------------------------- @@ -160,10 +160,10 @@ initialState = PState IM.empty 0 sinkSGet :: SGet a -> Sink ByteString (ResourceT IO) (a, PState)-sinkSGet parser = sinkParser (runStateT parser initialState)+sinkSGet parser = sinkParser (ST.runStateT parser initialState) runSGet :: SGet a -> BL.ByteString -> Either String (a, PState)-runSGet parser bs = AL.eitherResult $ AL.parse (runStateT parser initialState) bs+runSGet parser bs = AL.eitherResult $ AL.parse (ST.runStateT parser initialState) bs runSPut :: SPut -> BL.ByteString-runSPut = toLazyByteString . fromWrite . flip evalState initialWState+runSPut = BB.toLazyByteString . BB.fromWrite . flip ST.evalState initialWState
dns.cabal view
@@ -1,5 +1,5 @@ Name: dns-Version: 1.2.0+Version: 1.2.1 Author: Kazu Yamamoto <kazu@iij.ad.jp> Maintainer: Kazu Yamamoto <kazu@iij.ad.jp> License: BSD3@@ -30,13 +30,14 @@ , binary , blaze-builder , bytestring- , conduit >= 0.5+ , conduit >= 1.1+ , conduit-extra , containers , iproute >= 1.2.4 , mtl , network >= 2.3- , network-conduit , random+ , resourcet else Build-Depends: base >= 4 && < 5 , attoparsec@@ -44,14 +45,15 @@ , binary , blaze-builder , bytestring- , conduit+ , conduit >= 1.1+ , conduit-extra , containers , iproute >= 1.2.4 , mtl , network , network-bytestring- , network-conduit , random+ , resourcet Test-Suite network Type: exitcode-stdio-1.0@@ -78,15 +80,16 @@ , binary , blaze-builder , bytestring- , conduit >= 0.5+ , conduit >= 1.1+ , conduit-extra , containers , dns , hspec , iproute >= 1.2.4 , mtl , network >= 2.3- , network-conduit , random+ , resourcet Test-Suite doctest Type: exitcode-stdio-1.0