I'm using Open Transport TCP/IP to implement a database server in OS
9. (I'm working on carbonizing it for OS X). It all works OK except
that if a client connection goes down, the connection is not timed out
by the server.

I think that there should be two levels of timeout. One for
inactivity which is the two hour minimum timeout and another timeout
for when the connection goes down such as when the client computer's
connection is disrupted or when the client computer crashes. This
second time out needs to be much faster than two hours.

If I force-quit the client, I immediately get a T_DISCONNECT event on
the server side, and it is handled correctly.

Is there a way for me to quickly detect that the client is down and to
automatically disconnect it so that it doesn't still show up on my
list of connections on the server and doesn't keep database locks that
other connections may need to use?