packages feed

network-dns 1.1 → 1.1.0.1

raw patch · 2 files changed

+6/−9 lines, 2 filesdep −binary

Dependencies removed: binary

Files

network-dns.cabal view
@@ -1,5 +1,5 @@ Name: network-dns-Version: 1.1+Version: 1.1.0.1 Category: Network Stability: experimental Synopsis: Domain Name System data structures@@ -34,7 +34,6 @@                , hashable        >= 1.1                , containers      >= 0.4                , data-serializer >= 0.3.2-               , binary          >= 0.6.4                , bytestring      >= 0.10                , text-latin1     >= 0.2                , text-printer    >= 0.5
src/Network/DNS.hs view
@@ -64,7 +64,6 @@ import qualified Data.ByteString.Char8 as BS8 import qualified Data.ByteString.Lazy as BSL import qualified Data.ByteString.Builder as BB-import qualified Data.Binary.Get as B import Data.Serializer (Serializer, Serializable, SizedSerializable) import qualified Data.Serializer as S import Data.Deserializer (Deserializer, Deserializable)@@ -279,14 +278,13 @@  evalDecomp ∷ Deserializer μ            ⇒ Word16-           → DecompT D.BinaryDeserializer α            → DecompT μ α+           → DecompT μ α evalDecomp len m = StateT $ \ptrs offset → do-  buf ← BSL.fromStrict <$> D.take (fromIntegral len)-  let getM = D.binaryDeserializer $ runStateT m ptrs offset-  case B.runGetOrFail getM buf of-    Left (_, _, e) → unexpected e-    Right (_, _, (ptrs', _, x)) → return (ptrs', addToOffset len offset, x)+    D.isolate (fromIntegral len) $ runStateT (m >>= drain) ptrs offset+  where drain r = lift D.chunk >>= \case+          bs | BS.null bs → return r+          bs → incOffset (fromIntegral $ BS.length bs) >> drain r  serializeHostName ∷ Serializer s ⇒ HostName → CompT s () serializeHostName = go . hostNameLabels