]> git.rkrishnan.org Git - functorrent.git/commitdiff
more refactoring around infohash
authorRamakrishnan Muthukrishnan <ram@rkrishnan.org>
Sat, 21 Feb 2015 03:43:45 +0000 (09:13 +0530)
committerRamakrishnan Muthukrishnan <ram@rkrishnan.org>
Sat, 21 Feb 2015 03:43:45 +0000 (09:13 +0530)
src/Main.hs
src/Peer.hs
src/Tracker.hs

index bb50a8be38f4116ea46d67c976c6711dca086e6f..32dc41a83099fe89bb8442e7a8f5b2554c67b793 100644 (file)
@@ -37,7 +37,9 @@ main = do
             Nothing -> putStrLn "parse error"
             Just m -> do
               let len = MInfo.lengthInBytes (MInfo.info m)
-              body <- BC.pack <$> T.connect (MInfo.announce m) (T.prepareRequest d peerId len)
+                  (Benc.Bdict d') = d
+              body <- BC.pack <$> T.connect (MInfo.announce m) (T.prepareRequest d' peerId len)
               print (P.getPeers (P.getPeerResponse body))
+              print (BC.length (P.handShakeMsg d' peerId))
       Left e -> printError e
     putStrLn "done"
index 52cc03f25829dbf27d9fc5a21237ae9c87e4a1fe..0f33961a63709656ea442f5afba875ed31fb6b7a 100644 (file)
@@ -59,5 +59,4 @@ handShakeMsg m peer_id = let pstrlen = BC.concat $ BL.toChunks $ Bin.encode (19
                              reserved = BC.replicate 8 '\0'
                              infoH = T.infoHash m
                              peerID = BC.pack peer_id
-                         in
-                          BC.concat [pstrlen, pstr, reserved, infoH, peerID]
+                         in BC.concat [pstrlen, pstr, reserved, infoH, peerID]
index 599c2938d8c0e8d8046768c2adcdb6d30b9b3275..5afc26f3b3729c50dbd47e3ce4cd8cd0116fc273 100644 (file)
@@ -11,14 +11,13 @@ import qualified Data.ByteString.Base16 as B16
 import qualified Utils as U
 import Data.Char
 
-
 type Url = String
-
+type InfoDict = M.Map Benc.BVal Benc.BVal
 
 -- | urlEncodeHash
 --
 -- >>> urlEncodeHash $ BC.pack "123456789abcdef123456789abcdef123456789a"
--- "%124Vx%9a%bc%de%f1%23Eg%89%ab%cd%ef%124Vx%9a"
+-- "%124vx%9a%bc%de%f1%23Eg%89%ab%cd%ef%124Vx%9a"
 urlEncodeHash :: BC.ByteString -> String
 urlEncodeHash bs = concatMap (encode . BC.unpack) (U.splitN 2 bs)
   where encode b@[c1, c2] = let c =  chr (read ("0x" ++ b))
@@ -34,11 +33,11 @@ urlEncodeHash bs = concatMap (encode . BC.unpack) (U.splitN 2 bs)
 
 infoHash :: M.Map Benc.BVal Benc.BVal -> BC.ByteString
 infoHash m = let info = m M.! Benc.Bstr (BC.pack "info")
-             in (B16.encode . SHA1.hash . BC.pack . Benc.encode) info
+             in (SHA1.hash . BC.pack . Benc.encode) info
 
-prepareRequest :: Benc.BVal -> String -> Integer -> String
-prepareRequest (Benc.Bdict d) peer_id len =
-  let p = [("info_hash", urlEncodeHash (infoHash d)),
+prepareRequest :: InfoDict -> String -> Integer -> String
+prepareRequest d peer_id len =
+  let p = [("info_hash", urlEncodeHash ((B16.encode . infoHash) d)),
            ("peer_id", HB.urlEncode peer_id),
            ("port", "6881"),
            ("uploaded", "0"),