summaryrefslogtreecommitdiff
path: root/net/dccp/input.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@g5.osdl.org>2005-09-13 17:07:20 -0700
committerLinus Torvalds <torvalds@g5.osdl.org>2005-09-13 17:07:20 -0700
commitd8ac10639b6a1ed900efbee38c18baaca31e64dc (patch)
tree511a3a60a0828df91658c50a4bffce481ced2454 /net/dccp/input.c
parentb24fd48a0b9afe9a16bec94ab10d7e83c1b57ce6 (diff)
parent033d974405276c22609c45d50167dd11df20aa82 (diff)
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Diffstat (limited to 'net/dccp/input.c')
-rw-r--r--net/dccp/input.c9
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;