diff options
author | 2003-12-08 10:48:57 +0000 | |
---|---|---|
committer | 2003-12-08 10:48:57 +0000 | |
commit | 891d03556844c3356502ec4c19ad6790e5690690 (patch) | |
tree | da8041dee6e09ee61be1ae140a0796ac699a996f /sys/netinet/tcp_input.c | |
parent | ip_output expects network byte order; report Bob Kitella; ok deraadt (diff) | |
download | wireguard-openbsd-891d03556844c3356502ec4c19ad6790e5690690.tar.xz wireguard-openbsd-891d03556844c3356502ec4c19ad6790e5690690.zip |
switch to CIRCLEQ_FOREACH_REVERSE in tcpdropoldhalfopen() and
avoid dropping youngest TCB; ok henning deraadt
Diffstat (limited to 'sys/netinet/tcp_input.c')
-rw-r--r-- | sys/netinet/tcp_input.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c index 945076d1f62..8df35d0d1be 100644 --- a/sys/netinet/tcp_input.c +++ b/sys/netinet/tcp_input.c @@ -1,4 +1,4 @@ -/* $OpenBSD: tcp_input.c,v 1.135 2003/12/08 07:07:36 mcbride Exp $ */ +/* $OpenBSD: tcp_input.c,v 1.136 2003/12/08 10:48:57 markus Exp $ */ /* $NetBSD: tcp_input.c,v 1.23 1996/02/13 23:43:44 christos Exp $ */ /* @@ -323,10 +323,7 @@ tcpdropoldhalfopen(avoidtp, port) int s; s = splnet(); - inp = tcbtable.inpt_queue.cqh_first; - if (inp) /* XXX */ - for (; inp != (struct inpcb *)&tcbtable.inpt_queue && --ncheck; - inp = inp->inp_queue.cqe_prev) { + CIRCLEQ_FOREACH_REVERSE(inp, &tcbtable.inpt_queue, inp_queue) { if ((tp = (struct tcpcb *)inp->inp_ppcb) && tp != avoidtp && tp->t_state == TCPS_SYN_RECEIVED && @@ -334,12 +331,11 @@ tcpdropoldhalfopen(avoidtp, port) tcp_close(tp); goto done; } + if (--ncheck) + break; } - inp = tcbtable.inpt_queue.cqh_first; - if (inp) /* XXX */ - for (; inp != (struct inpcb *)&tcbtable.inpt_queue; - inp = inp->inp_queue.cqe_prev) { + CIRCLEQ_FOREACH_REVERSE(inp, &tcbtable.inpt_queue, inp_queue) { if ((tp = (struct tcpcb *)inp->inp_ppcb) && tp != avoidtp && tp->t_state == TCPS_SYN_RECEIVED) { |