From 01dcc99cb0f556ca06ab2dc508180c393e0f15f9 Mon Sep 17 00:00:00 2001 From: Andrew Martin Date: Tue, 8 Aug 2023 10:07:37 -0400 Subject: [PATCH] Close file descriptor in accept when exception happens --- Network/Socket/Syscall.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Network/Socket/Syscall.hs b/Network/Socket/Syscall.hs index a7378be4..caf73010 100644 --- a/Network/Socket/Syscall.hs +++ b/Network/Socket/Syscall.hs @@ -191,7 +191,7 @@ listen s backlog = withFdSocket s $ \fd -> do accept :: SocketAddress sa => Socket -> IO (Socket, sa) accept listing_sock = withNewSocketAddress $ \new_sa sz -> withFdSocket listing_sock $ \listing_fd -> do - new_sock <- callAccept listing_fd new_sa sz >>= mkSocket + new_sock <- E.bracketOnError (callAccept listing_fd new_sa sz) c_close mkSocket new_addr <- peekSocketAddress new_sa return (new_sock, new_addr) where