diff --git a/cabal-install/Distribution/Client/HttpUtils.hs b/cabal-install/Distribution/Client/HttpUtils.hs index b3ed93233973bd3f1a4f1192827dac485e5d8dce..8396079546211002f1c0a7fbcea45b5803391a60 100644 --- a/cabal-install/Distribution/Client/HttpUtils.hs +++ b/cabal-install/Distribution/Client/HttpUtils.hs @@ -103,8 +103,10 @@ downloadURI verbosity uri path | uriScheme uri == "file:" = do -- hash matches to avoid unnecessary computation? downloadURI verbosity uri path = do let etagPath = path <.> "etag" + targetExists <- doesFileExist path etagPathExists <- doesFileExist etagPath - etag <- if etagPathExists + -- In rare cases the target file doesn't exist, but the etag does. + etag <- if targetExists && etagPathExists then liftM Just $ readFile etagPath else return Nothing @@ -116,8 +118,8 @@ downloadURI verbosity uri path = do (3,0,4) -> Right rsp (a,b,c) -> Left err where - err = ErrorMisc $ "Unsucessful HTTP code: " - ++ concatMap show [a,b,c] + err = ErrorMisc $ "Error HTTP code: " + ++ concatMap show [a,b,c] -- Only write the etag if we get a 200 response code. -- A 304 still sends us an etag header.