on master help sign in
close socket on exception (in connect)
commitd0b558e52120d74b3fbfcc464d91bfc855166808 authorHarendra Kumar <harendra@composewell.com> dateTue 3 Mar 2020, 17:50 (7 years ago) parent40d1e64
1 file changed+5−2
src/Streamly/Internal/Network/Inet/TCP.hs+5−2
src/Streamly/Internal/Network/Inet/TCP.hs+5−2
@@ -96,6 +96,7 @@ module Streamly.Internal.Network.Inet.TCP
9696 )
9797where
9898
99+import Control.Exception (onException)
99100import Control.Monad.Catch (MonadCatch, MonadMask, bracket)
100101import Control.Monad.IO.Class (MonadIO(..))
101102import Data.Word (Word8)
@@ -244,13 +245,15 @@ connectionsOnLocalHost = connectionsOnAddr (127,0,0,1)
244245-- TCP Clients
245246-------------------------------------------------------------------------------
246247
247−-- | Connect to the specified IP address and port number.
248+-- | Connect to the specified IP address and port number. Returns a connected
249+-- socket or throws an exception.
248250--
249251-- @since 0.7.0
250252connect :: (Word8, Word8, Word8, Word8) -> PortNumber -> IO Socket
251253connect addr port = do
252254 sock <- socket AF_INET Stream defaultProtocol
253− Net.connect sock $ SockAddrInet port (Net.tupleToHostAddress addr)
255+ (Net.connect sock $ SockAddrInet port (Net.tupleToHostAddress addr))
256+ `onException` Net.close sock
254257 return sock
255258
256259-- | Connect to a remote host using IP address and port and run the supplied