TCP RST question

Hartmut.Brandt at dlr.de Hartmut.Brandt at dlr.de
Fri Jul 31 14:09:34 UTC 2009


Hi all,

I'm looking at our TCP stack and found a change that was introduced with
the syncache. The original BSD code did send an RST segment when the
connection timed out in SYN-RECEIVED. The TCP would retransmit the
SYN+ACK several times and then give up and RST the peer.

With syncache, however, our TCP doesn't send the RST anymore. It just
silently discards local state.

So the question is whether TCP is supposed to RST or not. Looking at
RFC793 I found nothing useful. It talks about sending RSTs as response
to incoming segments and it looks like TCP is never supposed to give up
retransmitting. The state diagram has no line from SYN-RECEIVED to
CLOSED. Stevens, on the other hand, has this line and it is labeled
'send: RST'.

So the questions are:

 - is TCP supposed to send an RST when it times out in SYN-RECEIVED?
 - why was this changed (I suppose it is just one of the regressions
introduced with the syn-cache).

harti

NB: does anybody know a good mailing list where this kind of questions
can be discussed?


More information about the freebsd-net mailing list