diff options
author | Arnaldo Carvalho de Melo <acme@mandriva.com> | 2005-09-13 18:03:15 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@mandriva.com> | 2005-09-13 18:03:15 -0400 |
commit | 811265b8e8bf84e3b91507bf6a3a8eea20e7a4b7 (patch) | |
tree | 7b27a9c2c2a1bac2a4b3c9176f8741e5d71ced41 /net/dccp | |
parent | 24b8e05dc1b03c1f80828e642838511c16e17250 (diff) |
[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>
Diffstat (limited to 'net/dccp')
-rw-r--r-- | net/dccp/input.c | 3 |
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) | |||
50 | return; | 50 | return; |
51 | } | 51 | } |
52 | 52 | ||
53 | dccp_set_state(sk, DCCP_CLOSING); | 53 | if (sk->sk_state != DCCP_CLOSING) |
54 | dccp_set_state(sk, DCCP_CLOSING); | ||
54 | dccp_send_close(sk, 0); | 55 | dccp_send_close(sk, 0); |
55 | } | 56 | } |
56 | 57 | ||