I'm seeing a problem with TCP keepalive behavior in 2.6.12.5. Linux provides 3 non-standard TCP socket options for tweaking the keepalive behavior of individual sockets: TCP_KEEPIDLE, TCP_KEEPCNT, and TCP_KEEPINTVL. The values set on a socket with these options should override the system-wide default. Depending on how you set these three knobs, it sometimes does the right thing and sometimes does the wrong thing. The right thing is to wait IDLE seconds, then send CNT probes INTVL seconds apart, then reset the TCP connection. The wrong behavior I'm seeing is the first probe goes out on schedule, and sometimes a few more probes go out on schedule, but then it stops sending anything at all. It doesnt send the last of the probes, and it doesnt send the reset. The connection is stuck in the ESTABLISHED state, according to netstat. The behavior seems to be the same for sockets established by accepting an incoming connection and sockets established by connecting to a server out on the net. I've attached my test program and the results of some test runs. For these tests I run my test program, it makes a TCP connection and sets the keepalive options then calls pause(). Pull the network cable and watch the packet sniffer. Let me know if I can do anything to help track this down, though I'm going to be traveling and will be slow to respond until Monday August 29. -- Sebastian Kuzminsky