diff options
Diffstat (limited to 'net/dccp/input.c')
-rw-r--r-- | net/dccp/input.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/net/dccp/input.c b/net/dccp/input.c index 78b043c458bf..a1900157e2d7 100644 --- a/net/dccp/input.c +++ b/net/dccp/input.c | |||
@@ -86,7 +86,8 @@ static int dccp_check_seqno(struct sock *sk, struct sk_buff *skb) | |||
86 | dh->dccph_type == DCCP_PKT_SYNCACK) { | 86 | dh->dccph_type == DCCP_PKT_SYNCACK) { |
87 | if (between48(DCCP_SKB_CB(skb)->dccpd_ack_seq, | 87 | if (between48(DCCP_SKB_CB(skb)->dccpd_ack_seq, |
88 | dp->dccps_awl, dp->dccps_awh) && | 88 | dp->dccps_awl, dp->dccps_awh) && |
89 | !before48(DCCP_SKB_CB(skb)->dccpd_seq, dp->dccps_swl)) | 89 | dccp_delta_seqno(dp->dccps_swl, |
90 | DCCP_SKB_CB(skb)->dccpd_seq) >= 0) | ||
90 | dccp_update_gsr(sk, DCCP_SKB_CB(skb)->dccpd_seq); | 91 | dccp_update_gsr(sk, DCCP_SKB_CB(skb)->dccpd_seq); |
91 | else | 92 | else |
92 | return -1; | 93 | return -1; |
@@ -203,7 +204,8 @@ static int __dccp_rcv_established(struct sock *sk, struct sk_buff *skb, | |||
203 | if (dp->dccps_role != DCCP_ROLE_CLIENT) | 204 | if (dp->dccps_role != DCCP_ROLE_CLIENT) |
204 | goto send_sync; | 205 | goto send_sync; |
205 | check_seq: | 206 | check_seq: |
206 | if (!before48(DCCP_SKB_CB(skb)->dccpd_seq, dp->dccps_osr)) { | 207 | if (dccp_delta_seqno(dp->dccps_osr, |
208 | DCCP_SKB_CB(skb)->dccpd_seq) >= 0) { | ||
207 | send_sync: | 209 | send_sync: |
208 | dccp_send_sync(sk, DCCP_SKB_CB(skb)->dccpd_seq, | 210 | dccp_send_sync(sk, DCCP_SKB_CB(skb)->dccpd_seq, |
209 | DCCP_PKT_SYNC); | 211 | DCCP_PKT_SYNC); |