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
---------------------------------------------------------------------------