on master help sign in
Merge branch 'master' of github.com:yesodweb/wai
commitaabf2d47d3f10dbdacbbb9e7061799b8dec3de62 authorMichael Snoyman <michael@snoyman.com> dateThu 10 Dec 2015, 11:29 (11 years ago) parent298b923fbd1c84
5 files changed+18−12
warp/Network/Wai/Handler/Warp/Date.hs+2−2 warp/Network/Wai/Handler/Warp/File.hs+1−3 warp/Network/Wai/Handler/Warp/HTTP2.hs+1−1 warp/Network/Wai/Handler/Warp/HTTP2/Request.hs+12−4 warp/warp.cabal+2−2
warp/Network/Wai/Handler/Warp/Date.hs+2−2
@@ -18,8 +18,8 @@ import Data.ByteString.Char8
1818import Network.HTTP.Date
1919
2020#if WINDOWS
21−import Data.Time (UTCTime, formatTime, getCurrentTime)
22−import Data.Time.Clock.POSIX (posixSecondsToUTCTime, utcTimeToPOSIXSeconds)
21+import Data.Time (UTCTime, getCurrentTime)
22+import Data.Time.Clock.POSIX (utcTimeToPOSIXSeconds)
2323import Foreign.C.Types (CTime(..))
2424#else
2525import System.Posix (epochTime)
warp/Network/Wai/Handler/Warp/File.hs+1−3
@@ -12,9 +12,7 @@ import Control.Applicative ((<|>))
1212import Data.Array ((!))
1313import Data.ByteString (ByteString)
1414import qualified Data.ByteString as B hiding (pack)
15−import qualified Data.ByteString.Builder as B
1615import qualified Data.ByteString.Char8 as B (pack, readInteger)
17−import qualified Data.ByteString.Lazy as L
1816import Network.HTTP.Date
1917import qualified Network.HTTP.Types as H
2018import qualified Network.HTTP.Types.Header as H
@@ -163,7 +161,7 @@ addContentHeaders :: H.ResponseHeaders -> Integer -> Integer -> Integer -> H.Res
163161addContentHeaders hs off len size = hs''
164162 where
165163 contentRange = contentRangeHeader off (off + len - 1) size
166− lengthBS = L.toStrict $ B.toLazyByteString $ B.integerDec len
164+ !lengthBS = B.pack $ show len
167165 hs' = (H.hContentLength, lengthBS):(
168166#if MIN_VERSION_http_types(0,9,0)
169167 H.hAcceptRanges
warp/Network/Wai/Handler/Warp/HTTP2.hs+1−1
@@ -38,7 +38,7 @@ http2 conn ii addr transport settings readN app = do
3838 -- fixme: hard coding: 10
3939 replicateM_ 10 $ spawnAction mgr
4040 -- Receiver
41− let mkreq = mkRequest settings addr
41+ let mkreq = mkRequest ii settings addr
4242 tid <- forkIO $ frameReceiver ctx mkreq readN
4343 -- Sender
4444 -- frameSender is the main thread because it ensures to send
warp/Network/Wai/Handler/Warp/HTTP2/Request.hs+12−4
@@ -19,6 +19,7 @@ import qualified Data.ByteString.Char8 as B8
1919import Data.CaseInsensitive (mk)
2020import Data.IORef (IORef, readIORef, newIORef, writeIORef)
2121import Data.Maybe (isJust)
22+import qualified Data.Vault.Lazy as Vault
2223#if __GLASGOW_HASKELL__ < 709
2324import Data.Monoid (mempty)
2425#endif
@@ -28,10 +29,13 @@ import Network.HTTP.Types (RequestHeaders,hRange)
2829import qualified Network.HTTP.Types as H
2930import Network.Socket (SockAddr)
3031import Network.Wai
32+import Network.Wai.Internal (Request(..))
3133import Network.Wai.Handler.Warp.HTTP2.Types
3234import Network.Wai.Handler.Warp.ReadInt
35+import Network.Wai.Handler.Warp.Request (pauseTimeoutKey, getFileInfoKey)
36+import Network.Wai.Handler.Warp.Types (InternalInfo(..))
3337import qualified Network.Wai.Handler.Warp.Settings as S (Settings, settingsNoParsePath)
34−import Network.Wai.Internal (Request(..))
38+import qualified Network.Wai.Handler.Warp.Timeout as Timeout
3539
3640data ValidHeaders = ValidHeaders {
3741 vhMethod :: ByteString
@@ -43,8 +47,8 @@ data ValidHeaders = ValidHeaders {
4347
4448type MkReq = ValidHeaders -> IO ByteString -> Request
4549
46−mkRequest :: S.Settings -> SockAddr -> MkReq
47−mkRequest settings addr (ValidHeaders m p ma _ hdr) body = req
50+mkRequest :: InternalInfo -> S.Settings -> SockAddr -> MkReq
51+mkRequest ii settings addr (ValidHeaders m p ma _ hdr) body = req
4852 where
4953 (unparsedPath,query) = B8.break (=='?') p
5054 path = H.extractPath unparsedPath
@@ -61,11 +65,15 @@ mkRequest settings addr (ValidHeaders m p ma _ hdr) body = req
6165 , isSecure = True
6266 , remoteHost = addr
6367 , requestBody = body
64− , vault = mempty
68+ , vault = vaultValue
6569 , requestBodyLength = ChunkedBody -- fixme
6670 , requestHeaderHost = ma
6771 , requestHeaderRange = lookup hRange hdr
6872 }
73+ th = threadHandle ii
74+ vaultValue = Vault.insert pauseTimeoutKey (Timeout.pause th)
75+ $ Vault.insert getFileInfoKey (fileInfo ii)
76+ Vault.empty
6977
7078----------------------------------------------------------------
7179
warp/warp.cabal+2−2
@@ -54,6 +54,7 @@ Library
5454 , word8
5555 , hashable
5656 , unordered-containers
57+ , http-date
5758 if flag(network-bytestring)
5859 Build-Depends: network >= 2.2.1.5 && < 2.2.3
5960 , network-bytestring >= 0.1.3 && < 0.1.4
@@ -104,7 +105,6 @@ Library
104105 Build-Depends: time
105106 else
106107 Build-Depends: unix
107− , http-date
108108 Other-modules: Network.Wai.Handler.Warp.MultiMap
109109
110110Test-Suite doctest
@@ -167,11 +167,11 @@ Test-Suite spec
167167 , word8
168168 , hashable
169169 , unordered-containers
170+ , http-date
170171
171172 if (os(linux) || os(freebsd) || os(darwin)) && flag(allow-sendfilefd)
172173 Cpp-Options: -DSENDFILEFD
173174 Build-Depends: unix
174− , http-date
175175 if os(windows)
176176 Cpp-Options: -DWINDOWS
177177