]> git.rkrishnan.org Git - functorrent.git/commitdiff
refactor doHandshake to use pattern matching
authorRamakrishnan Muthukrishnan <ram@rkrishnan.org>
Fri, 18 Sep 2015 06:32:42 +0000 (12:02 +0530)
committerRamakrishnan Muthukrishnan <ram@rkrishnan.org>
Fri, 18 Sep 2015 06:32:42 +0000 (12:02 +0530)
src/FuncTorrent/Peer.hs

index 2caf377ac6849a79d3e38afe4424d50ee77c32d0..ed88e834f23c1069ce43cb846bcb09e4fc1397ae 100644 (file)
@@ -84,30 +84,28 @@ connectToPeer (Peer _ ip port) = do
   return h
 
 doHandshake :: Bool -> Handle -> Peer -> ByteString -> String -> IO ()
-doHandshake isClient h peer infoHash peerid =
+doHandshake True h peer infoHash peerid = do
   let hs = genHandshakeMsg infoHash peerid
-  in
-   if isClient
-   then do
-     hPut h hs
-     putStrLn $ "--> handhake to peer: " ++ show peer
-     _ <- hGet h (length (unpack hs))
-     putStrLn $ "<-- handshake from peer: " ++ show peer
-     return ()
-   else do
-     putStrLn $ "waiting for a handshake"
-     hsMsg <- hGet h (length (unpack hs))
-     putStrLn $ "<-- handshake from peer: " ++ show peer
-     let rxInfoHash = take 20 $ drop 28 hsMsg
-     if rxInfoHash /= infoHash
-       then do
-       putStrLn $ "infoHashes does not match"
-       hClose h
-       return ()
-       else do
-       _ <- hPut h hs
-       putStrLn $ "--> handhake to peer: " ++ show peer
-       return ()
+  hPut h hs
+  putStrLn $ "--> handhake to peer: " ++ show peer
+  _ <- hGet h (length (unpack hs))
+  putStrLn $ "<-- handshake from peer: " ++ show peer
+  return ()
+doHandshake False h peer infoHash peerid = do
+  let hs = genHandshakeMsg infoHash peerid
+  putStrLn $ "waiting for a handshake"
+  hsMsg <- hGet h (length (unpack hs))
+  putStrLn $ "<-- handshake from peer: " ++ show peer
+  let rxInfoHash = take 20 $ drop 28 hsMsg
+  if rxInfoHash /= infoHash
+    then do
+    putStrLn $ "infoHashes does not match"
+    hClose h
+    return ()
+    else do
+    _ <- hPut h hs
+    putStrLn $ "--> handhake to peer: " ++ show peer
+    return ()
 
 bitfieldToList :: [Word8] -> [Integer]
 bitfieldToList bs = go bs 0