diff options
author | Gerrit Renker <gerrit@erg.abdn.ac.uk> | 2006-11-13 13:12:07 -0200 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-12-02 21:22:17 -0800 |
commit | e11d9d30802278af22e78d8c10f348b683670cd9 (patch) | |
tree | ba084b0c5791090164363ad2aaec2c0ab241f603 /net/dccp/output.c | |
parent | 08a29e41bb6d6516b0f65e19381f537168d1768e (diff) | |
download | linux-e11d9d30802278af22e78d8c10f348b683670cd9.tar.bz2 |
[DCCP]: Increment sequence numbers on retransmitted Response packets
Problem:
Diffstat (limited to 'net/dccp/output.c')
-rw-r--r-- | net/dccp/output.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/net/dccp/output.c b/net/dccp/output.c index 992caedd7725..08ee5547a2f2 100644 --- a/net/dccp/output.c +++ b/net/dccp/output.c @@ -332,6 +332,8 @@ struct sk_buff *dccp_make_response(struct sock *sk, struct dst_entry *dst, skb->dst = dst_clone(dst); dreq = dccp_rsk(req); + if (inet_rsk(req)->acked) /* increase ISS upon retransmission */ + dccp_inc_seqno(&dreq->dreq_iss); DCCP_SKB_CB(skb)->dccpd_type = DCCP_PKT_RESPONSE; DCCP_SKB_CB(skb)->dccpd_seq = dreq->dreq_iss; @@ -354,6 +356,8 @@ struct sk_buff *dccp_make_response(struct sock *sk, struct dst_entry *dst, dccp_csum_outgoing(skb); + /* We use `acked' to remember that a Response was already sent. */ + inet_rsk(req)->acked = 1; DCCP_INC_STATS(DCCP_MIB_OUTSEGS); return skb; } |