diff options
Diffstat (limited to 'net/dccp/input.c')
-rw-r--r-- | net/dccp/input.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/net/dccp/input.c b/net/dccp/input.c index 6276b23fc204..cde0e704dfce 100644 --- a/net/dccp/input.c +++ b/net/dccp/input.c | |||
@@ -102,9 +102,6 @@ static int dccp_check_seqno(struct sock *sk, struct sk_buff *skb) | |||
102 | * Update S.GSR, S.SWL, S.SWH | 102 | * Update S.GSR, S.SWL, S.SWH |
103 | * If P.type != Sync, | 103 | * If P.type != Sync, |
104 | * Update S.GAR | 104 | * Update S.GAR |
105 | * Otherwise, | ||
106 | * Send Sync packet acknowledging P.seqno | ||
107 | * Drop packet and return | ||
108 | */ | 105 | */ |
109 | lswl = dp->dccps_swl; | 106 | lswl = dp->dccps_swl; |
110 | lawl = dp->dccps_awl; | 107 | lawl = dp->dccps_awl; |
@@ -135,6 +132,17 @@ static int dccp_check_seqno(struct sock *sk, struct sk_buff *skb) | |||
135 | : "exists", | 132 | : "exists", |
136 | (unsigned long long) lawl, (unsigned long long) ackno, | 133 | (unsigned long long) lawl, (unsigned long long) ackno, |
137 | (unsigned long long) dp->dccps_awh); | 134 | (unsigned long long) dp->dccps_awh); |
135 | /* | ||
136 | * Step 6: Check sequence numbers | ||
137 | * Otherwise, | ||
138 | * If P.type == Reset, | ||
139 | * Send Sync packet acknowledging S.GSR | ||
140 | * Otherwise, | ||
141 | * Send Sync packet acknowledging P.seqno | ||
142 | * Drop packet and return | ||
143 | */ | ||
144 | if (dh->dccph_type == DCCP_PKT_RESET) | ||
145 | seqno = dp->dccps_gsr; | ||
138 | dccp_send_sync(sk, seqno, DCCP_PKT_SYNC); | 146 | dccp_send_sync(sk, seqno, DCCP_PKT_SYNC); |
139 | return -1; | 147 | return -1; |
140 | } | 148 | } |