diff options
author | Arnaldo Carvalho de Melo <acme@ghostprotocols.net> | 2005-10-11 00:25:00 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2005-10-11 00:25:00 -0400 |
commit | 2a9bc9bb4d3a4570a8a48aadf071b91e657adb89 (patch) | |
tree | b20dc78e5e9dc6deed61c47bf12a72ec8f9a9768 /net | |
parent | 777b25a2fea7129222eb11fba55c0a67982383ff (diff) |
[DCCP]: Transition from PARTOPEN to OPEN when receiving DATA packets
Noticed by Andrea Bittau, that provided a patch that was modified to
not transition from RESPOND to OPEN when receiving DATA packets.
Signed-off-by: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/dccp/input.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/net/dccp/input.c b/net/dccp/input.c index 1b6b2cb12376..3454d5941900 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, | |||
375 | case DCCP_PKT_RESET: | 375 | case DCCP_PKT_RESET: |
376 | inet_csk_clear_xmit_timer(sk, ICSK_TIME_DACK); | 376 | inet_csk_clear_xmit_timer(sk, ICSK_TIME_DACK); |
377 | break; | 377 | break; |
378 | case DCCP_PKT_DATA: | ||
379 | if (sk->sk_state == DCCP_RESPOND) | ||
380 | break; | ||
378 | case DCCP_PKT_DATAACK: | 381 | case DCCP_PKT_DATAACK: |
379 | case DCCP_PKT_ACK: | 382 | case DCCP_PKT_ACK: |
380 | /* | 383 | /* |
@@ -393,7 +396,8 @@ static int dccp_rcv_respond_partopen_state_process(struct sock *sk, | |||
393 | dccp_sk(sk)->dccps_osr = DCCP_SKB_CB(skb)->dccpd_seq; | 396 | dccp_sk(sk)->dccps_osr = DCCP_SKB_CB(skb)->dccpd_seq; |
394 | dccp_set_state(sk, DCCP_OPEN); | 397 | dccp_set_state(sk, DCCP_OPEN); |
395 | 398 | ||
396 | if (dh->dccph_type == DCCP_PKT_DATAACK) { | 399 | if (dh->dccph_type == DCCP_PKT_DATAACK || |
400 | dh->dccph_type == DCCP_PKT_DATA) { | ||
397 | dccp_rcv_established(sk, skb, dh, len); | 401 | dccp_rcv_established(sk, skb, dh, len); |
398 | queued = 1; /* packet was queued | 402 | queued = 1; /* packet was queued |
399 | (by dccp_rcv_established) */ | 403 | (by dccp_rcv_established) */ |