fix missing from 5.04.3 ???

John Meacham john@repetae.net
Wed, 12 Mar 2003 13:19:05 -0800


this bug is also a showstopper for a pretty big project I am working on.
lets make sure it doesn't fall through the cracks.
        John

On Wed, Mar 12, 2003 at 09:06:59AM +0000, Keean Schupke wrote:
> Previous 5.04 releases had an exception handler missing from connectTo 
> that results in a socket leaking if socketToHandle fails for some reason 
> (I cant remember the exact circumstances at the moment, but it causes a 
> server to die - I think the leak is caused when the client closes the 
> connection during the handshake - ie somebody presses stop on a web 
> browser because of a slow connection after the handshake has just 
> started) - I suggested a fix along the lines of:
> 
> connectTo hostname (Service serv) = do
>    proto <- getProtocolNumber "tcp"
>    port <- getServicePortNumber serv
>    he <- getHostByName hostname
>    sock <- socket AF_INET Stream proto
>    (do
>        connect sock (SockAddrInet port (hostAddress he))
>        socketToHandle sock ReadWriteMode) `Control.Exception.catch` (\e 
> -> do sClose sock; throw e)
> 
>    This seems to be missing from 5.04.3 - this fix is important for 
> reliability in a production server, what happened - does this cause 
> problems in other places?
> 
>    Regards,
>    Keean Schupke.
> 
> 
> _______________________________________________
> Glasgow-haskell-users mailing list
> Glasgow-haskell-users@haskell.org
> http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
> 

-- 
---------------------------------------------------------------------------
John Meacham - California Institute of Technology, Alum. - john@foo.net
---------------------------------------------------------------------------