Subject: TCP problems - maybe a solution?
To: None <>
From: David Laight <>
List: current-users
Date: 07/21/2002 17:47:37
I've just found what looks like a bug in the TCP timeout code.
(This is from reading the sources!)

The 'dubious' code is in rev 1.53 of tcp_timer.c (10 Sep 2001),
I don't know which release that refers to.

The TCP code was changed to use kernel callouts (instead of
traversing the world  twice a second) - a not unreasonable change.

However the code calls 'callout_deactivate()' in order (I presume)
to stop the timeout.  However callout_deactivate is:

#define callout_deactivate(c)   ((c)->c_flags &= ~CALLOUT_ACTIVE)

and, unless i'm misreading the code, the CALLOUT_ACTIVE flag
has absolutely no effect on the callout routines.

I suspect this should be callout_stop() - but maybe something
more subtle was intended.


David Laight: