summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@mandriva.com>2005-09-13 19:05:08 -0300
committerArnaldo Carvalho de Melo <acme@mandriva.com>2005-09-13 19:05:08 -0300
commit2b80230a7f8cd346c1e2ebafdd02be432bf10459 (patch)
treea51d45efbe4b77c395ffe4fc51894e173d6d7345
parent811265b8e8bf84e3b91507bf6a3a8eea20e7a4b7 (diff)
downloadlinux-3.10-2b80230a7f8cd346c1e2ebafdd02be432bf10459.tar.gz
linux-3.10-2b80230a7f8cd346c1e2ebafdd02be432bf10459.tar.bz2
linux-3.10-2b80230a7f8cd346c1e2ebafdd02be432bf10459.zip
[DCCP]: Handle SYNC packets in dccp_rcv_state_process
Eliciting a SYNCACK in response, we were handling SYNC packets only in the DCCP_OPEN state, in dccp_rcv_established. Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
-rw-r--r--net/dccp/input.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/net/dccp/input.c b/net/dccp/input.c
index f01d588299c..c74034cf7ed 100644
--- a/net/dccp/input.c
+++ b/net/dccp/input.c
@@ -562,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;