fix missing from 5.04.3 ???
Keean Schupke
k.schupke@ic.ac.uk
Wed, 12 Mar 2003 09:06:59 +0000
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.