snap-server 1.0.2.2 → 1.0.3.0
raw patch · 5 files changed
+24/−16 lines, 5 files
Files
- snap-server.cabal +15/−9
- src/Snap/Http/Server.hs +2/−2
- src/Snap/Internal/Http/Server/Config.hs +2/−1
- src/Snap/Internal/Http/Server/Session.hs +2/−2
- src/Snap/Internal/Http/Server/TLS.hs +3/−2
snap-server.cabal view
@@ -1,5 +1,5 @@ name: snap-server-version: 1.0.2.2+version: 1.0.3.0 synopsis: A web server for the Snap Framework description: Snap is a simple and fast web development framework and server written in@@ -19,7 +19,9 @@ cabal-version: >= 1.10 homepage: http://snapframework.com/ category: Web, Snap, IO-Streams+tested-with: GHC==8.2.1, GHC==8.0.2, GHC==7.10.3, GHC==7.8.4, GHC==7.6.3, GHC==7.4.2 + extra-source-files: CONTRIBUTORS, LICENSE,@@ -31,6 +33,13 @@ test/key.pem, testserver/static/hello.txt +tested-with:+ GHC==7.4.2+ GHC==7.6.3,+ GHC==7.8.4,+ GHC==7.10.3,+ GHC==8.0.2,+ GHC==8.2.1 Flag portable Description: Compile in cross-platform mode. No platform-specific code or@@ -137,10 +146,7 @@ System.SendFile.Linux if os(darwin) && !flag(portable)- cpp-options: -DOSX -DHAS_SENDFILE -DHAS_UNIX_SOCKETS- other-modules:- System.SendFile,- System.SendFile.Darwin+ cpp-options: -DOSX -DHAS_UNIX_SOCKETS if os(freebsd) && !flag(portable) cpp-options: -DFREEBSD -DHAS_SENDFILE -DHAS_UNIX_SOCKETS@@ -214,7 +220,7 @@ snap-core >= 1.0 && < 1.1, text >= 0.11 && < 1.3, threads >= 0.5 && < 0.6,- time >= 1.0 && < 1.7,+ time >= 1.0 && < 1.9, transformers >= 0.3 && < 0.6, unix-compat >= 0.2 && < 0.5, vector >= 0.7 && < 0.13,@@ -304,7 +310,7 @@ blaze-builder >= 0.4 && < 0.5, bytestring >= 0.9 && < 0.11, bytestring-builder >= 0.10.4 && < 0.11,- criterion >= 0.6 && < 1.2,+ criterion >= 0.6 && < 1.3, io-streams, io-streams-haproxy >= 1.0 && < 1.1, snap-core >= 1.0 && < 1.1,@@ -396,7 +402,7 @@ old-locale >= 1.0 && < 1.1, snap-core >= 1.0 && < 1.1, text >= 0.11 && < 1.3,- time >= 1.0 && < 1.7,+ time >= 1.0 && < 1.9, unix-compat >= 0.2 && < 0.5, vector >= 0.7 && < 0.13 @@ -488,7 +494,7 @@ old-locale >= 1.0 && < 1.1, snap-core >= 1.0 && < 1.1, text >= 0.11 && < 1.3,- time >= 1.0 && < 1.7,+ time >= 1.0 && < 1.9, transformers >= 0.3 && < 0.6, unix-compat >= 0.2 && < 0.5, vector >= 0.7 && < 0.13
src/Snap/Http/Server.hs view
@@ -35,7 +35,7 @@ import qualified Data.Text.Encoding as T import Data.Version (showVersion) import Data.Word (Word64)-import Network.Socket (Socket, sClose)+import Network.Socket (Socket, close) import Prelude (Bool (..), Eq (..), IO, Maybe (..), Monad (..), Show (..), String, const, flip, fst, id, mapM, mapM_, maybe, snd, unzip3, zip, ($), ($!), (++), (.)) import System.IO (hFlush, hPutStrLn, stderr) #ifndef PORTABLE@@ -105,7 +105,7 @@ go conf sockets afuncs `finally` (mask_ $ do output "\nShutting down.."- mapM_ (eatException . sClose) sockets)+ mapM_ (eatException . close) sockets) where eatException :: IO a -> IO ()
src/Snap/Internal/Http/Server/Config.hs view
@@ -560,7 +560,8 @@ , isJust . getSSLCert ] sslValid = and sslVals- noPort = isNothing (getPort cfg) && not sslValid+ unixValid = isJust $ unixsocket cfg+ noPort = isNothing (getPort cfg) && not sslValid && not unixValid cfg' = emptyConfig { port = if noPort then Just 8000 else Nothing }
src/Snap/Internal/Http/Server/Session.hs view
@@ -509,7 +509,7 @@ -------------------------------------------------------------------------- {-# INLINE runServerHandler #-} runServerHandler !hookState !req = {-# SCC "httpSession/runServerHandler" #-} do- (_, rsp0) <- serverHandler config sessionData req+ (req0, rsp0) <- serverHandler config sessionData req userHandlerFinishedHook hookState req rsp0 -- check whether we should close the connection after sending the@@ -533,7 +533,7 @@ bytesSent <- sendResponse req rsp `E.catch` catchUserException hookState "sending-response" req dataFinishedHook hookState req rsp- logAccess req rsp bytesSent+ logAccess req0 rsp bytesSent return $! not cc' --------------------------------------------------------------------------
src/Snap/Internal/Http/Server/TLS.hs view
@@ -18,7 +18,7 @@ import Data.Typeable (Typeable) import Network.Socket (Socket) #ifdef OPENSSL-import Control.Exception (Exception, bracketOnError, finally, throwIO)+import Control.Exception (Exception, bracketOnError, finally, onException, throwIO) import Control.Monad (when) import Data.ByteString.Builder (byteString) import qualified Network.Socket as Socket@@ -135,7 +135,8 @@ (remotePort, remoteHost) <- getAddress remoteAddr ssl <- restore (SSL.connection ctx sock) - restore (SSL.accept ssl)+ restore (SSL.accept ssl) `onException` Socket.close sock+ (readEnd, writeEnd) <- SStreams.sslToStreams ssl let cleanup = (do Streams.write Nothing writeEnd