]> woffs.de Git - fd/haskell-amqp-utils.git/commitdiff
agitprop: fix exit code
authorFrank Doepper <[email protected]>
Tue, 19 Nov 2019 16:06:45 +0000 (17:06 +0100)
committerFrank Doepper <[email protected]>
Tue, 19 Nov 2019 16:06:45 +0000 (17:06 +0100)
agitprop.hs

index fe05b81fca2be4226f985ec254edba5186144e2c..c82adb0dcb33f8e78a18517e03cb3352e0b66d5c 100644 (file)
@@ -22,6 +22,7 @@ import Network.AMQP.Utils.Helpers
 import Network.AMQP.Utils.Options
 import Paths_amqp_utils (version)
 import System.Environment
+import System.Exit
 import System.INotify
 import qualified System.Posix.Files as F
 
@@ -86,8 +87,13 @@ main = do
   if (confirm args)
     then waitForConfirms chan >>= (printparam' "confirmed") . show
     else return ()
-  closeConnection conn
-  hr "connection closed"
+  X.catch (closeConnection conn) exceptionHandler
+
+-- | A handler for clean exit
+exceptionHandler :: AMQPException -> IO ()
+exceptionHandler (ChannelClosedException Normal txt) = printparam' "exit" txt >> exitWith ExitSuccess
+exceptionHandler (ConnectionClosedException Normal txt) = printparam' "exit" txt >> exitWith ExitSuccess
+exceptionHandler x = printparam' "exception" (show x) >> exitWith (ExitFailure 1)
 
 -- | The handler for publisher confirms
 confirmCallback :: (Word64, Bool, AckType) -> IO ()