[DCCP]: Check if already in the CLOSING state in dccp_rcv_closereq
authorArnaldo Carvalho de Melo <acme@mandriva.com>
Tue, 13 Sep 2005 22:03:15 +0000 (19:03 -0300)
committerArnaldo Carvalho de Melo <acme@mandriva.com>
Tue, 13 Sep 2005 22:03:15 +0000 (19:03 -0300)
It is possible to receive more than one CLOSEREQ packet if the
CLOSE packet sent in response is somehow lost, change the state
to DCCP_CLOSING only on the first CLOSEREQ packet received.

Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
net/dccp/input.c

index c60bc3433f5eac378d8a4b87198276576fd6d7f8..f01d588299c888ba2785dc91bf92dd3a72154ba3 100644 (file)
@@ -50,7 +50,8 @@ static void dccp_rcv_closereq(struct sock *sk, struct sk_buff *skb)
                return;
        }
 
-       dccp_set_state(sk, DCCP_CLOSING);
+       if (sk->sk_state != DCCP_CLOSING)
+               dccp_set_state(sk, DCCP_CLOSING);
        dccp_send_close(sk, 0);
 }