Quoth Bardur Arantsson <s...@scientician.net>, > Taru Karttunen wrote:
>> Excerpts from Bardur Arantsson's message of Wed Feb 17 21:27:07 +0200 2010: >>> For sendfile, a timeout of 1 second would probably be fine. The *ONLY* >>> purpose of threadWaitWrite in the sendfile code is to avoid busy-waiting >>> on EAGAIN from the native sendfile. >> >> Of course this will kill connections for all clients that may have a >> two second network hickup. >> > > I'm not talking about killing the connection. I'm talking about retrying > sendfile() if threadWaitWrite has been waiting for more than 1 second. > > If the connection *has already been closed* (as detected by the OS), > then sendfile() will fail with EBADF, and we're good. ... > I don't see how that would lead to anything like what you describe. If I understand correctly, we're talking about what it means for the OS to detect a closed connection. The proposal I think was to change the socket options to add keepalive, and to set a short timeout. This will indeed allow the OS to discover connections that didn't properly close, but are effectively closed in the sense that they are no use any more - disconnected cable, or it sounds like the PS3 may routinely do this out of negligence. The problem is that this definition of `closed' is, precisely, `failed to respond within 2 seconds.' If there is no observable difference between a connection that has been abandoned by the PS3, and a connection that just suffered a momentary lapse, then there's no way to catch the former without making connections more fragile. Donn Cave d...@avvanta.com _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe