Subject: tcp_input.c 1.194
To: None <itojun@netbsd.org>
From: Charles M. Hannum <abuse@spamalicious.com>
List: tech-net
Date: 01/27/2005 19:40:50
You made this change, with the log message:
revision 1.194
date: 2004/04/20 16:52:12; author: itojun; state: Exp; lines: +51 -22
- respond to RST by ACK, as suggested in NISCC recommendation
- rate-limit ACKs against RSTs and SYNs
As far as I can tell, this is a reference to NISCC 236929.
While I have no objection to the rate-limiting, or double-checking received
RSTs, I cannot find any reason for the following change:
+ } else if (tlen) {
+ tp->t_dupacks = 0; /*XXX*/
+ /* drop very old ACKs unless th_seq matches */
+ if (th->th_seq != tp->rcv_nxt &&
+ SEQ_LT(th->th_ack,
+ tp->snd_una - tp->max_sndwnd)) {
+ goto drop;
+ }
+ break;
As far as I can tell, it simply does not correspond to anything in your log
message, or in the NISCC advisory.
I can only assume that it is an attempt to prevent injection of bogus data
with a guessed ack number. However, given that the sequence number has to be
in the window anyway, and it's not normally exposed, it occurs to me to
wonder whether this actually buys us anything.