Fix bdict encode, cleanup blist encode
authorJaseem Abid <jaseemabid@gmail.com>
Sat, 18 Apr 2015 09:31:59 +0000 (15:01 +0530)
committerJaseem Abid <jaseemabid@gmail.com>
Sat, 18 Apr 2015 09:33:45 +0000 (15:03 +0530)
This one took a long time to debug! Need more unit tests

src/FuncTorrent/Bencode.hs

index 2b641a7f4b51f57b8ef4f831c6156a20f79c054c..dc149c84f16a00432f80f32fc520f2d0f2b70751 100644 (file)
@@ -159,5 +159,8 @@ decode = parse bencVal "BVal"
 encode :: BVal -> ByteString
 encode (Bstr bs) = pack $ show (length bs) ++ ":" ++ unpack bs
 encode (Bint i) = pack $ "i" ++ show i ++ "e"
-encode (Blist xs) = pack $ "l" ++ unpack (concat $ map encode xs) ++ "e"
-encode (Bdict d) = concat [concat ["d", encode . Bstr . pack $ k , encode (d ! k) , "e"] | k <- keys d]
+encode (Blist xs) = concat ["l", concat $ map encode xs, "e"]
+encode (Bdict d) = concat ["d", concat kvlist, "e"]
+    where
+      kvlist :: [ByteString]
+      kvlist = [concat [encode . Bstr . pack $ k , encode (d ! k)] | k <- keys d]