A related problem... connections are refused when using accept if the hostname doesn't resolve. Maybe something like this would help, unless there is a better way?
accept sock = do ~(sock', (SockAddrInet port haddr)) <- Socket.accept sock (HostEntry peer _ _ _) <- ((getHostByAddr AF_INET haddr) `Control.Exception.catch` (\_ -> return (HostEntry ((showHex ((haddr `shiftR` 24) .&. 0xff) . showChar '.' . showHex ((haddr `shiftR` 16) .&. 0xff) . showChar '.' . showHex ((haddr `shiftR` 8) .&. 0xff) . showChar '.' . showHex (haddr .&. 0xff)) "") [] AF_INET []))) handle <- socketToHandle sock' ReadWriteMode return (handle, peer, port) Regards, Keean Schupke. -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On Behalf Of Simon Marlow Sent: 09 January 2003 13:18 To: Keean Schupke; [EMAIL PROTECTED] Subject: RE: readping fd's and flushing buffers > This may be related to the answer just given to do with > finalizing the > Handles, as I have a > problem with sockets hanging around after a host name resolution has > failed (using the simple socket > library). Having looked at the code I would like to suggest the > following change: > > connectTo hostname (PortNumber port) = do > proto <- getProtocolNumber "tcp" > sock <- socket AF_INET Stream proto > he <- getHostByName hostname > connect sock (SockAddrInet port (hostAddress he)) > socketToHandle sock ReadWriteMode > > Should become: > > connectTo hostname (PortNumber port) = do > proto <- getProtocolNumber "tcp" > sock <- socket AF_INET Stream proto > (do > he <- getHostByName hostname > connect sock (SockAddrInet port (hostAddress he)) > socketToHandle sock ReadWriteMode) `Exception.catch` > (\e -> do > sClose sock;throw e) > > Is this a sensible change to make? Yes, well spotted. I'll add the exception handler. Cheers, Simon _______________________________________________ Glasgow-haskell-users mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/glasgow-haskell-users _______________________________________________ Glasgow-haskell-users mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/glasgow-haskell-users