summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@mandriva.com>2005-09-13 19:03:15 -0300
committerArnaldo Carvalho de Melo <acme@mandriva.com>2005-09-13 19:03:15 -0300
commit811265b8e8bf84e3b91507bf6a3a8eea20e7a4b7 (patch)
tree7b27a9c2c2a1bac2a4b3c9176f8741e5d71ced41
parent24b8e05dc1b03c1f80828e642838511c16e17250 (diff)
downloadlinux-stable-811265b8e8bf84e3b91507bf6a3a8eea20e7a4b7.tar.gz
linux-stable-811265b8e8bf84e3b91507bf6a3a8eea20e7a4b7.tar.bz2
linux-stable-811265b8e8bf84e3b91507bf6a3a8eea20e7a4b7.zip
[DCCP]: Check if already in the CLOSING state in dccp_rcv_closereq
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>
-rw-r--r--net/dccp/input.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/dccp/input.c b/net/dccp/input.c
index c60bc3433f5e..f01d588299c8 100644
--- a/net/dccp/input.c
+++ b/net/dccp/input.c
@@ -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);
}