diff options
author | bms <bms@FreeBSD.org> | 2004-06-18 02:47:59 +0000 |
---|---|---|
committer | bms <bms@FreeBSD.org> | 2004-06-18 02:47:59 +0000 |
commit | 48317d5cbf6fc60d08d669d945662e451113a578 (patch) | |
tree | 92b7a0f0e1b54cf4b2f7a5864412dae67663e58a /sys/netinet/tcp_output.c | |
parent | ddf2ab11f4b789d38a12ccc49baa9a6781f11e80 (diff) | |
download | FreeBSD-src-48317d5cbf6fc60d08d669d945662e451113a578.zip FreeBSD-src-48317d5cbf6fc60d08d669d945662e451113a578.tar.gz |
Don't set FIN on a retransmitted segment after a FIN has been sent,
unless the segment really contains the last of the data for the stream.
PR: kern/34619
Obtained from: OpenBSD (tcp_output.c rev 1.47)
Noticed by: Joseph Ishac
Reviewed by: George Neville-Neil
Diffstat (limited to 'sys/netinet/tcp_output.c')
-rw-r--r-- | sys/netinet/tcp_output.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/netinet/tcp_output.c b/sys/netinet/tcp_output.c index 46d9337..7d48eef 100644 --- a/sys/netinet/tcp_output.c +++ b/sys/netinet/tcp_output.c @@ -292,7 +292,7 @@ again: len = tp->t_maxseg; sendalot = 1; } - if (SEQ_LT(tp->snd_nxt + len, tp->snd_una + so->so_snd.sb_cc)) + if (off + len < so->so_snd.sb_cc) flags &= ~TH_FIN; recwin = sbspace(&so->so_rcv); |