I have a 486dx4-100 with 16 meg ram and a 3c509b-combo ethernet card, and
im running slackware version 1.2.8.
I have a mud that listens to an internet socket, that I set up with
ye olde 'listen' call, so that I have a queue of 3 pending connections.
Ordinarily, this isnt a problem, but every now and again, someone will try to
telnet to the mud and the 3-way handshake wont get through. Soon, all three
pending requests in the queue are used up, and noone else can log on until
the connections either time out (which takes forever... seen it hang for an
hour at a time before) or until the connection finally gets the last ack back.
I know this problem still exists in linux 1.2.13, because I have seen it
occur on a machine with that version of linux also.
When I do a netstat, the hung sockets show as being in state '
Im willing to hack my kernel to fix this, but I need a little bit of help,
maybe a lot of help depending on what solution I have to take. My first
thought was to make it so that when the socket is accepted, it is removed
from the queue even if the connection has not been made. My second idea was
to make it so that if the last ACK isnt received in 45 seconds, it discards
the socket as broken.
I dont know if any of these will work, but if anyone out there could point
me in the right direction or if there is a kernel patch available, I would