Subject: TCP problems - maybe a solution?
To: None <email@example.com>
From: David Laight <firstname.lastname@example.org>
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: email@example.com