@@ -6,6 +6,7 @@ module Network.Wai.Handler.DevelServer (run) where
6import Language.Haskell.Interpreter
6import Language.Haskell.Interpreter
7import Network.Wai
7import Network.Wai
9+import qualified Data.ByteString.Lazy.UTF8 as U
9import qualified Data.ByteString.Lazy.Char8 as L8
10import qualified Data.ByteString.Lazy.Char8 as L8
10import Network
11import Network
11 ( listenOn, accept, sClose, PortID(PortNumber), Socket
12 ( listenOn, accept, sClose, PortID(PortNumber), Socket
@@ -41,10 +42,14 @@ startApp queue withApp = do
41 case msession of
42 case msession of
42 Nothing -> return ()
43 Nothing -> return ()
43 Just (req, onRes) -> do
44 Just (req, onRes) -> do
44− res <- app req
45+ void $ forkIO $ (handle onErr $ app req) >>= onRes
47+ onErr :: SomeException -> IO Response
49+ $ Response status500 [("Content-Type", "text/plain; charset=utf-8")]
50+ $ ResponseLBS $ U.fromString
51+ $ "Exception thrown while running application\n\n" ++ show e
52+ void x = x >> return ()
49fillApp :: String -> String -> M.MVar Queue -> IO ()
54fillApp :: String -> String -> M.MVar Queue -> IO ()
50fillApp modu func mqueue =
55fillApp modu func mqueue =