on master help sign in
Added some FIXMEs for improvements
89a22d8Michael Snoyman
Network/Wai/Handler/Warp.hs+2−1
@@ -251,6 +251,7 @@ sendResponse req hv socket (ResponseBuilder s hs b)
251sendResponse req hv socket (ResponseEnumerator res) =
251sendResponse req hv socket (ResponseEnumerator res) =
252 res go
252 res go
253 where
253 where
254+ -- FIXME perhaps alloca a buffer per thread and reuse that in all functiosn below. Should lessen greatly the GC burden (I hope)
254 go s hs
255 go s hs
255 | not (hasBody s req) = do
256 | not (hasBody s req) = do
256 liftIO $ Sock.sendMany socket
257 liftIO $ Sock.sendMany socket
@@ -260,7 +261,7 @@ sendResponse req hv socket (ResponseEnumerator res) =
260 go s hs =
261 go s hs =
261 chunk'
262 chunk'
262 $ E.enumList 1 [headers hv s hs isChunked']
263 $ E.enumList 1 [headers hv s hs isChunked']
263− $$ E.joinI $ builderToByteString
264+ $$ E.joinI $ builderToByteString -- FIXME unsafeBuilderToByteString
264 $$ (iterSocket socket >> return isKeepAlive)
265 $$ (iterSocket socket >> return isKeepAlive)
265 where
266 where
266 hasLength = lookup "content-length" hs /= Nothing
267 hasLength = lookup "content-length" hs /= Nothing