From 9672c5fb8fa99b24e80e8fe7501c30f3bc4cb389 Mon Sep 17 00:00:00 2001 From: darkf Date: Thu, 24 Oct 2013 00:34:56 -0700 Subject: [PATCH] Fix sockets and use correct address family --- interp.hs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/interp.hs b/interp.hs index d7eecec..839b3e1 100644 --- a/interp.hs +++ b/interp.hs @@ -129,10 +129,12 @@ _fclose handle@(StreamV h) = do _sockopen (TupleV [StrV host, IntV port]) = do (handles,env) <- get - sock <- lift $ SO.socket SO.AF_INET SO.Stream SO.defaultProtocol - addr:_ <- lift $ SO.getAddrInfo Nothing (Just host) (Just $ show port) - lift $ SO.connect sock (SO.addrAddress addr) - handle <- lift $ SO.socketToHandle sock ReadWriteMode + handle <- lift $ SO.withSocketsDo $ do + addr:_ <- SO.getAddrInfo Nothing (Just host) (Just $ show port) + sock <- SO.socket (SO.addrFamily addr) SO.Stream SO.defaultProtocol + SO.connect sock (SO.addrAddress addr) + handle <- SO.socketToHandle sock ReadWriteMode + return handle put (handles ++ [handle], env) return . StreamV $ length handles