diff --git a/src/server/FastCGIUtils.hs b/src/server/FastCGIUtils.hs index 763eeb292..8d90c9fa7 100644 --- a/src/server/FastCGIUtils.hs +++ b/src/server/FastCGIUtils.hs @@ -8,7 +8,7 @@ module FastCGIUtils (initFastCGI, loopFastCGI, splitBy) where import Control.Concurrent -import Control.OldException +import Control.Exception import Control.Monad import Data.Dynamic import Data.IORef @@ -143,17 +143,19 @@ stderrToFile s = return () -- * General CGI Error exception mechanism data CGIError = CGIError { cgiErrorCode :: Int, cgiErrorMessage :: String, cgiErrorText :: [String] } - deriving Typeable + deriving (Show,Typeable) + +instance Exception CGIError where + toException e = SomeException e + fromException (SomeException e) = cast e throwCGIError :: Int -> String -> [String] -> CGI a -throwCGIError c m t = throwCGI $ DynException $ toDyn $ CGIError c m t +throwCGIError c m t = throwCGI $ toException $ CGIError c m t handleCGIErrors :: CGI CGIResult -> CGI CGIResult -handleCGIErrors x = x `catchCGI` \e -> case e of - DynException d -> case fromDynamic d of - Nothing -> throw e - Just (CGIError c m t) -> outputError c m t - _ -> throw e +handleCGIErrors x = x `catchCGI` \e -> case fromException e of + Nothing -> throw e + Just (CGIError c m t) -> outputError c m t -- * General CGI and JSON stuff diff --git a/src/server/gf-server.cabal b/src/server/gf-server.cabal index 05cbebf76..cdd61d933 100644 --- a/src/server/gf-server.cabal +++ b/src/server/gf-server.cabal @@ -7,11 +7,12 @@ license-file: LICENSE synopsis: FastCGI Server for Grammatical Framework executable pgf-server - build-depends: base, + build-depends: base >= 4, old-time, directory, filepath, containers, + process, gf >= 3.1, cgi >= 3001.1.7.0, fastcgi >= 3001.0.2.1, @@ -27,32 +28,3 @@ executable pgf-server ghc-options: -threaded if os(windows) ghc-options: -optl-mwindows - -executable morpho-server - build-depends: base, - old-time, - directory, - filepath, - containers, - gf >= 3.1, - cgi >= 3001.1.7.0, - fastcgi >= 3001.0.2.1, - json >= 0.3.3, - utf8-string >= 0.3.1.1, - bytestring, - pretty, - array, - process, - mtl, - random - if !os(windows) - build-depends: unix - main-is: MorphoService.hs - other-modules: - FastCGIUtils - Cache - URLEncoding - GF.Grammar.Parser - hs-source-dirs: ../compiler ../runtime/haskell . ../../dist/build/autogen - if os(windows) - ghc-options: -optl-mwindows