diff options
author | jlemon <jlemon@FreeBSD.org> | 2003-03-08 22:06:20 +0000 |
---|---|---|
committer | jlemon <jlemon@FreeBSD.org> | 2003-03-08 22:06:20 +0000 |
commit | 03b8ace4891ef0ac6e1d27e79b9464022ed5fba0 (patch) | |
tree | 86b7ff103cc19bffc08502fceb82fff6fc3c8d83 /sys/netinet/tcp_reass.c | |
parent | 3cab7a88ab3bf9db32f46801047c9350030d5e77 (diff) | |
download | FreeBSD-src-03b8ace4891ef0ac6e1d27e79b9464022ed5fba0.zip FreeBSD-src-03b8ace4891ef0ac6e1d27e79b9464022ed5fba0.tar.gz |
Remove a panic(); if the zone allocator can't provide more timewait
structures, reuse the oldest one. Also move the expiry timer from
a per-structure callout to the tcp slow timer.
Sponsored by: DARPA, NAI Labs
Diffstat (limited to 'sys/netinet/tcp_reass.c')
-rw-r--r-- | sys/netinet/tcp_reass.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/sys/netinet/tcp_reass.c b/sys/netinet/tcp_reass.c index 7b4827a..7717e06 100644 --- a/sys/netinet/tcp_reass.c +++ b/sys/netinet/tcp_reass.c @@ -2862,7 +2862,7 @@ tcp_timewait(tw, to, th, m, tlen) if ((ticks - tw->t_starttime) > tcp_msl) goto reset; if (CC_GT(to->to_cc, tw->cc_recv)) { - tcp_twclose(tw); + (void) tcp_twclose(tw, 0); return (1); } goto drop; @@ -2892,7 +2892,7 @@ tcp_timewait(tw, to, th, m, tlen) * are above the previous ones. */ if ((thflags & TH_SYN) && SEQ_GT(th->th_seq, tw->rcv_nxt)) { - tcp_twclose(tw); + (void) tcp_twclose(tw, 0); return (1); } @@ -2908,8 +2908,7 @@ tcp_timewait(tw, to, th, m, tlen) if (thflags & TH_FIN) { seq = th->th_seq + tlen + (thflags & TH_SYN ? 1 : 0); if (seq + 1 == tw->rcv_nxt) - callout_reset(tw->tt_2msl, - 2 * tcp_msl, tcp_timer_2msl_tw, tw); + tcp_timer_2msl_reset(tw, 2 * tcp_msl); } /* |