aboutsummaryrefslogtreecommitdiff
path: root/net/dccp/input.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@g5.osdl.org>2005-10-12 19:07:59 -0700
committerLinus Torvalds <torvalds@g5.osdl.org>2005-10-12 19:07:59 -0700
commit02d31ed258434b29eb0e3a10f5ede6eecd46b6ba (patch)
treee901ed8af00756086e2da1a5e0c52602d2b01603 /net/dccp/input.c
parent1b66e9fe8523cc239b6bea8443a860f50aeb2a83 (diff)
parent9ff5c59ce278c37bca22fbf98076d199bcaf9845 (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.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/net/dccp/input.c b/net/dccp/input.c
index 1b6b2cb1237..3454d594190 100644
--- a/net/dccp/input.c
+++ b/net/dccp/input.c
@@ -375,6 +375,9 @@ static int dccp_rcv_respond_partopen_state_process(struct sock *sk,
case DCCP_PKT_RESET:
inet_csk_clear_xmit_timer(sk, ICSK_TIME_DACK);
break;
+ case DCCP_PKT_DATA:
+ if (sk->sk_state == DCCP_RESPOND)
+ break;
case DCCP_PKT_DATAACK:
case DCCP_PKT_ACK:
/*
@@ -393,7 +396,8 @@ static int dccp_rcv_respond_partopen_state_process(struct sock *sk,
dccp_sk(sk)->dccps_osr = DCCP_SKB_CB(skb)->dccpd_seq;
dccp_set_state(sk, DCCP_OPEN);
- if (dh->dccph_type == DCCP_PKT_DATAACK) {
+ if (dh->dccph_type == DCCP_PKT_DATAACK ||
+ dh->dccph_type == DCCP_PKT_DATA) {
dccp_rcv_established(sk, skb, dh, len);
queued = 1; /* packet was queued
(by dccp_rcv_established) */