diff --git a/cabal-install/Distribution/Client/Upload.hs b/cabal-install/Distribution/Client/Upload.hs
index 95c12bb054aa5df438e654085d85ebcdf22fe6bd..ed8e0430e3f1c167438f258a1d7ac8a6917815f2 100644
--- a/cabal-install/Distribution/Client/Upload.hs
+++ b/cabal-install/Distribution/Client/Upload.hs
@@ -19,6 +19,7 @@ import Network.URI (URI(uriPath), parseURI)
 import Network.HTTP (Header(..), HeaderName(..))
 
 import System.IO        (hFlush, stdin, stdout, hGetEcho, hSetEcho)
+import System.Exit      (exitFailure)
 import Control.Exception (bracket)
 import System.FilePath  ((</>), takeExtension, takeFileName)
 import qualified System.FilePath.Posix as FilePath.Posix ((</>))
@@ -88,11 +89,14 @@ uploadDoc verbosity repoCtxt mUsername mPassword path = do
     notice verbosity $ "Uploading documentation " ++ path ++ "... "
     resp <- putHttpFile transport verbosity uploadURI path auth headers
     case resp of
-      (200,_)     -> notice verbosity "Ok"
-      (code,err)  -> notice verbosity $ "Error uploading documentation "
-                                        ++ path ++ ": "
-                                        ++ "http code " ++ show code ++ "\n"
-                                        ++ err
+      (200,_)     ->
+        notice verbosity "Ok"
+      (code,err)  -> do
+        notice verbosity $ "Error uploading documentation "
+                        ++ path ++ ": "
+                        ++ "http code " ++ show code ++ "\n"
+                        ++ err
+        exitFailure
 
 promptUsername :: IO Username
 promptUsername = do
@@ -150,7 +154,10 @@ handlePackage :: HttpTransport -> Verbosity -> URI -> Auth
 handlePackage transport verbosity uri auth path =
   do resp <- postHttpFile transport verbosity uri path auth
      case resp of
-       (200,_)     -> notice verbosity "Ok"
-       (code,err)  -> notice verbosity $ "Error uploading " ++ path ++ ": "
-                      ++ "http code " ++ show code ++ "\n"
-                      ++ err
+       (200,_)     ->
+          notice verbosity "Ok"
+       (code,err)  -> do
+          notice verbosity $ "Error uploading " ++ path ++ ": "
+                          ++ "http code " ++ show code ++ "\n"
+                          ++ err
+          exitFailure