diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2005-09-14 01:32:40 +0200 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2005-09-14 01:32:40 +0200 |
commit | 033d974405276c22609c45d50167dd11df20aa82 (patch) | |
tree | bf57f52fe748be2f1fd48fdb890732345abf0763 /net | |
parent | Merge master.kernel.org:/pub/scm/linux/kernel/git/holtmann/bluetooth-2.6 (diff) | |
parent | [DCCP]: Handle SYNC packets in dccp_rcv_state_process (diff) | |
download | linux-033d974405276c22609c45d50167dd11df20aa82.tar.xz linux-033d974405276c22609c45d50167dd11df20aa82.zip |
Merge master.kernel.org:/pub/scm/linux/kernel/git/acme/net-2.6
Diffstat (limited to 'net')
-rw-r--r-- | net/dccp/input.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/net/dccp/input.c b/net/dccp/input.c index c60bc3433f5e..c74034cf7ede 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); } @@ -561,6 +562,12 @@ int dccp_rcv_state_process(struct sock *sk, struct sk_buff *skb, return 0; } + if (unlikely(dh->dccph_type == DCCP_PKT_SYNC)) { + dccp_send_sync(sk, DCCP_SKB_CB(skb)->dccpd_seq, + DCCP_PKT_SYNCACK); + goto discard; + } + switch (sk->sk_state) { case DCCP_CLOSED: return 1; |