]> git.rkrishnan.org Git - functorrent.git/commitdiff
rename tracker response function, Utils, catch exceptions.
authorRamakrishnan Muthukrishnan <ram@rkrishnan.org>
Sun, 6 Dec 2015 09:09:42 +0000 (14:39 +0530)
committerRamakrishnan Muthukrishnan <ram@rkrishnan.org>
Sun, 6 Dec 2015 09:09:42 +0000 (14:39 +0530)
src/FuncTorrent/Tracker.hs
src/FuncTorrent/Utils.hs

index e0752e9e0a4f196a11cb289783e72ea8f7e2dc60..125a9269f9b9137fc7e2b25273a3ae4de44d1dd9 100644 (file)
@@ -159,9 +159,9 @@ initialTrackerState sz = do
                   , downloaded = down
                   , left = sz }
 
                   , downloaded = down
                   , left = sz }
 
--- | Deserialize tracker response
-mkTrackerResponse :: BVal -> Either ByteString TrackerResponse
-mkTrackerResponse resp =
+-- | Deserialize HTTP tracker response
+parseTrackerResponse :: BVal -> Either ByteString TrackerResponse
+parseTrackerResponse resp =
     case lookup "failure reason" body of
       Just (Bstr err) -> Left err
       Just _ -> Left "Unknown failure"
     case lookup "failure reason" body of
       Just (Bstr err) -> Left err
       Just _ -> Left "Unknown failure"
@@ -231,7 +231,7 @@ trackerLoop port peerId m st = do
   case Benc.decode resp of
     Left e -> return $ pack (show e)
     Right trackerInfo ->
   case Benc.decode resp of
     Left e -> return $ pack (show e)
     Right trackerInfo ->
-      case mkTrackerResponse trackerInfo of
+      case parseTrackerResponse trackerInfo of
         Left e -> return e
         Right tresp -> do
           _ <- threadDelay $ fromIntegral (interval tresp)
         Left e -> return e
         Right tresp -> do
           _ <- threadDelay $ fromIntegral (interval tresp)
index b1db8d0defcbf9d6b1c9f46ec520448369b90b19..2a2797626527c8bdc7f3f983361bed31f127e129 100644 (file)
@@ -11,7 +11,7 @@ module FuncTorrent.Utils
 import Prelude hiding (writeFile, take)
 
 import qualified Crypto.Hash.SHA1 as SHA1 (hash)
 import Prelude hiding (writeFile, take)
 
 import qualified Crypto.Hash.SHA1 as SHA1 (hash)
-import Control.Monad (unless)
+import Control.Exception.Base (IOException, try)
 import Data.ByteString (ByteString, writeFile, hPut, hGet, take)
 import qualified Data.ByteString.Char8 as BC
 import System.IO (withFile, hSeek, IOMode(..), SeekMode(..))
 import Data.ByteString (ByteString, writeFile, hPut, hGet, take)
 import qualified Data.ByteString.Char8 as BC
 import System.IO (withFile, hSeek, IOMode(..), SeekMode(..))
@@ -26,11 +26,14 @@ splitNum n d | n == 0 = []
              | n < d = [n]
              | otherwise = d : splitNum (n - d) d
 
              | n < d = [n]
              | otherwise = d : splitNum (n - d) d
 
-createDummyFile :: FilePath -> Int -> IO ()
+createDummyFile :: FilePath -> Int -> IO (Either IOException ())
 createDummyFile path size = do
   dfe <- doesFileExist path
 createDummyFile path size = do
   dfe <- doesFileExist path
-  unless dfe $
-    writeFile path (BC.replicate size '\0')
+  if not dfe
+    then do
+    try $ writeFile path (BC.replicate size '\0')
+    else
+    return $ Right ()
 
 -- write into a file at a specific offet
 writeFileAtOffset :: FilePath -> Integer -> ByteString -> IO ()
 
 -- write into a file at a specific offet
 writeFileAtOffset :: FilePath -> Integer -> ByteString -> IO ()