Re: dst cache overflow

kuznet@ms2.inr.ac.ru
Thu, 13 Jan 2000 20:00:48 +0300 (MSK)


Hello!

> if ((1 << sk->state) &
> - (TCPF_ESTABLISHED|TCPF_SYN_SENT|TCPF_SYN_RECV|TCPF_CLOSE_WAIT)) {
> + (TCPF_ESTABLISHED|TCPF_SYN_SENT|TCPF_CLOSE_WAIT)) {

SYN-RECV sockets _are_ legal here. They occur as result of crossed SYNs.
We must send FIN of them.

> lock_sock(sk);
>
> /* Clear out any half completed packets. FIN if needed. */
> - if (tcp_close_state(sk,0))
> + if (tcp_close_state(sk,sk->state == TCP_CLOSE_WAIT))

Hey! Andi, second argument of tcp_close_state() means that socket
loses association to descriptor. You will break rsh now! It will
work only for 3 minutes.

Alexey

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/