@@ -129,7 +129,14 @@ runSettingsSocket set socket app =
129129 return (socketConnection conn, sa)
130130
131131runSettingsConnection :: Settings -> IO (Connection, SockAddr) -> Application -> IO ()
132−runSettingsConnection set getConn app = do
132+runSettingsConnection set getConn app = runSettingsConnectionMaker set getConnMaker app
133+ where
134+ getConnMaker = do
135+ (conn, sa) <- getConn
136+ return (return conn, sa)
137+
138+runSettingsConnectionMaker :: Settings -> IO (IO Connection, SockAddr) -> Application -> IO ()
139+runSettingsConnectionMaker set getConn app = do
133140 tm <- maybe (T.initialize $ settingsTimeout set * 1000000) return
134141 $ settingsManager set
135142#if SENDFILEFD
@@ -140,9 +147,10 @@ runSettingsConnection set getConn app = do
140147#endif
141148 mask $ \restore -> forever $ do
142149 allowInterrupt
143− (conn, addr) <- getConnLoop
150+ (mkConn, addr) <- getConnLoop
144151 void . forkIO $ do
145152 th <- T.registerKillThread tm
153+ conn <- mkConn
146154#if SENDFILEFD
147155 let cleaner = Cleaner th fc
148156#else