on master help sign in
closing file descriptors with the timer manager. (#411)
commit168e5b1dac6566c0cdb4098eea00ab8796b5b7ab authorKazu Yamamoto <kazu@iij.ad.jp> dateThu 30 Jul 2015, 14:20 (11 years ago) parent48e9a9a
1 file changed+4−2
warp/Network/Wai/Handler/Warp/HTTP2/Sender.hs+4−2
warp/Network/Wai/Handler/Warp/HTTP2/Sender.hs+4−2
@@ -23,6 +23,7 @@ import Network.Wai.Handler.Warp.HTTP2.HPACK
2323import Network.Wai.Handler.Warp.HTTP2.Types
2424import Network.Wai.Handler.Warp.IORef
2525import qualified Network.Wai.Handler.Warp.Settings as S
26+import qualified Network.Wai.Handler.Warp.Timeout as T
2627import Network.Wai.Handler.Warp.Types
2728import Network.Wai.Internal (Response(..))
2829import qualified System.PosixCompat.Files as P
@@ -32,7 +33,7 @@ import qualified System.IO as IO
3233#else
3334import Network.Wai.Handler.Warp.FdCache
3435import Network.Wai.Handler.Warp.SendFile (positionRead)
35−import System.Posix.IO (openFd, OpenFileFlags(..), defaultFileFlags, OpenMode(ReadOnly))
36+import System.Posix.IO (openFd, OpenFileFlags(..), defaultFileFlags, OpenMode(ReadOnly), closeFd)
3637import System.Posix.Types
3738#endif
3839
@@ -235,7 +236,8 @@ fillResponseBodyGetNext Connection{connWriteBuffer,connBufferSize}
235236 Just fdcache -> getFd fdcache path
236237 Nothing -> do
237238 fd' <- openFd path ReadOnly Nothing defaultFileFlags{nonBlock=True}
238− return (fd', return ())
239+ th <- T.register (timeoutManager ii) (closeFd fd')
240+ return (fd', T.tickle th)
239241 let datBuf = connWriteBuffer `plusPtr` off
240242 room = min (connBufferSize - off) lim
241243 (start, bytes) <- fileStartEnd path mpart