@@ -116,14 +116,14 @@ sendResponse settings conn ii th req reqidxhdr src response = do
116 -- and status, the response to HEAD is processed here.
116 -- and status, the response to HEAD is processed here.
118 -- See definition of rsp below for proper body stripping.
118 -- See definition of rsp below for proper body stripping.
119− (ms, mlen) <- sendRsp conn ii ver s hs rspidxhdr rsp
119+ (ms, mlen) <- sendRsp conn ii ver s hs rsp
120 case ms of
120 case ms of
121 Nothing -> return ()
121 Nothing -> return ()
122 Just realStatus -> logger req realStatus mlen
122 Just realStatus -> logger req realStatus mlen
123 T.tickle th
123 T.tickle th
124 return ret
124 return ret
126− _ <- sendRsp conn ii ver s hs rspidxhdr RspNoBody
126+ _ <- sendRsp conn ii ver s hs RspNoBody
127 logger req s Nothing
127 logger req s Nothing
128 T.tickle th
128 T.tickle th
129 return isPersist
129 return isPersist
@@ -196,13 +196,12 @@ sendRsp :: Connection
196 -> H.HttpVersion
196 -> H.HttpVersion
197 -> H.Status
197 -> H.Status
198 -> H.ResponseHeaders
198 -> H.ResponseHeaders
199− -> IndexedHeader -- Response
201 -> IO (Maybe H.Status, Maybe Integer)
200 -> IO (Maybe H.Status, Maybe Integer)
203----------------------------------------------------------------
202----------------------------------------------------------------
205−sendRsp conn _ ver s hs _ RspNoBody = do
204+sendRsp conn _ ver s hs RspNoBody = do
206 -- Not adding Content-Length.
205 -- Not adding Content-Length.
207 -- User agents treats it as Content-Length: 0.
206 -- User agents treats it as Content-Length: 0.
208 composeHeader ver s hs >>= connSendAll conn
207 composeHeader ver s hs >>= connSendAll conn
@@ -210,7 +209,7 @@ sendRsp conn _ ver s hs _ RspNoBody = do
211----------------------------------------------------------------
210----------------------------------------------------------------
213−sendRsp conn _ ver s hs _ (RspBuilder body needsChunked) = do
212+sendRsp conn _ ver s hs (RspBuilder body needsChunked) = do
214 header <- composeHeaderBuilder ver s hs needsChunked
213 header <- composeHeaderBuilder ver s hs needsChunked
215 let hdrBdy
214 let hdrBdy
216 | needsChunked = header <> chunkedTransferEncoding body
215 | needsChunked = header <> chunkedTransferEncoding body
@@ -223,7 +222,7 @@ sendRsp conn _ ver s hs _ (RspBuilder body needsChunked) = do
224----------------------------------------------------------------
223----------------------------------------------------------------
226−sendRsp conn _ ver s hs _ (RspStream streamingBody needsChunked th) = do
225+sendRsp conn _ ver s hs (RspStream streamingBody needsChunked th) = do
227 header <- composeHeaderBuilder ver s hs needsChunked
226 header <- composeHeaderBuilder ver s hs needsChunked
228 (recv, finish) <- newByteStringBuilderRecv $ reuseBufferStrategy
227 (recv, finish) <- newByteStringBuilderRecv $ reuseBufferStrategy
229 $ toBuilderBuffer (connWriteBuffer conn) (connBufferSize conn)
228 $ toBuilderBuffer (connWriteBuffer conn) (connBufferSize conn)
@@ -247,7 +246,7 @@ sendRsp conn _ ver s hs _ (RspStream streamingBody needsChunked th) = do
248----------------------------------------------------------------
247----------------------------------------------------------------
250−sendRsp conn _ _ _ _ _ (RspRaw withApp src tickle) = do
249+sendRsp conn _ _ _ _ (RspRaw withApp src tickle) = do
251 withApp recv send
250 withApp recv send
252 return (Nothing, Nothing)
251 return (Nothing, Nothing)
@@ -261,8 +260,8 @@ sendRsp conn _ _ _ _ _ (RspRaw withApp src tickle) = do
262-- Sophisticated WAI applications.
261-- Sophisticated WAI applications.
263-- We respect s0. s0 MUST be a proper value.
262-- We respect s0. s0 MUST be a proper value.
264−sendRsp conn ii ver s0 hs0 rspidxhdr (RspFile path (Just part) _ isHead hook) =
263+sendRsp conn ii ver s0 hs0 (RspFile path (Just part) _ isHead hook) =
265− sendRspFile2XX conn ii ver s0 hs rspidxhdr path beg len isHead hook
264+ sendRspFile2XX conn ii ver s0 hs path beg len isHead hook
267 beg = filePartOffset part
266 beg = filePartOffset part
268 len = filePartByteCount part
267 len = filePartByteCount part
@@ -272,17 +271,17 @@ sendRsp conn ii ver s0 hs0 rspidxhdr (RspFile path (Just part) _ isHead hook) =
273-- Simple WAI applications.
272-- Simple WAI applications.
274-- Status is ignored
273-- Status is ignored
275−sendRsp conn ii ver _ hs0 rspidxhdr (RspFile path Nothing reqidxhdr isHead hook) = do
274+sendRsp conn ii ver _ hs0 (RspFile path Nothing idxhdr isHead hook) = do
276 efinfo <- E.try $ getFileInfo ii path
275 efinfo <- E.try $ getFileInfo ii path
277 case efinfo of
276 case efinfo of
278 Left (_ex :: E.IOException) ->
277 Left (_ex :: E.IOException) ->
279#ifdef WARP_DEBUG
278#ifdef WARP_DEBUG
280 print _ex >>
279 print _ex >>
282− sendRspFile404 conn ii ver hs0 rspidxhdr
281+ sendRspFile404 conn ii ver hs0
283− Right finfo -> case conditionalRequest finfo hs0 rspidxhdr reqidxhdr of
282+ Right finfo -> case conditionalRequest finfo hs0 idxhdr of
284− WithoutBody s -> sendRsp conn ii ver s hs0 rspidxhdr RspNoBody
283+ WithoutBody s -> sendRsp conn ii ver s hs0 RspNoBody
285− WithBody s hs beg len -> sendRspFile2XX conn ii ver s hs rspidxhdr path beg len isHead hook
284+ WithBody s hs beg len -> sendRspFile2XX conn ii ver s hs path beg len isHead hook
287----------------------------------------------------------------
286----------------------------------------------------------------
@@ -291,15 +290,14 @@ sendRspFile2XX :: Connection
291 -> H.HttpVersion
290 -> H.HttpVersion
292 -> H.Status
291 -> H.Status
293 -> H.ResponseHeaders
292 -> H.ResponseHeaders
295 -> FilePath
293 -> FilePath
296 -> Integer
294 -> Integer
297 -> Integer
295 -> Integer
300 -> IO (Maybe H.Status, Maybe Integer)
298 -> IO (Maybe H.Status, Maybe Integer)
301−sendRspFile2XX conn ii ver s hs rspidxhdr path beg len isHead hook
299+sendRspFile2XX conn ii ver s hs path beg len isHead hook
302− | isHead = sendRsp conn ii ver s hs rspidxhdr RspNoBody
300+ | isHead = sendRsp conn ii ver s hs RspNoBody
303 | otherwise = do
301 | otherwise = do
304 lheader <- composeHeader ver s hs
302 lheader <- composeHeader ver s hs
305 (mfd, fresher) <- getFd ii path
303 (mfd, fresher) <- getFd ii path
@@ -312,9 +310,8 @@ sendRspFile404 :: Connection
312 -> InternalInfo
310 -> InternalInfo
313 -> H.HttpVersion
311 -> H.HttpVersion
314 -> H.ResponseHeaders
312 -> H.ResponseHeaders
316 -> IO (Maybe H.Status, Maybe Integer)
313 -> IO (Maybe H.Status, Maybe Integer)
317−sendRspFile404 conn ii ver hs0 rspidxhdr = sendRsp conn ii ver s hs rspidxhdr (RspBuilder body True)
314+sendRspFile404 conn ii ver hs0 = sendRsp conn ii ver s hs (RspBuilder body True)
319 s = H.notFound404
316 s = H.notFound404
320 hs = replaceHeader H.hContentType "text/plain; charset=utf-8" hs0
317 hs = replaceHeader H.hContentType "text/plain; charset=utf-8" hs0