From c187addd210a5bde35e100f9ee2dba3f0c44260b Mon Sep 17 00:00:00 2001 From: xtaci Date: Thu, 22 Dec 2016 15:10:15 +0800 Subject: [PATCH] adjust parameters in resend and early retransmit --- kcp.go | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/kcp.go b/kcp.go index eec4143..0a5db82 100644 --- a/kcp.go +++ b/kcp.go @@ -756,15 +756,18 @@ func (kcp *KCP) flush() { lost = true lostSegs++ } else if segment.fastack >= resent { - needsend = true - segment.xmit++ - segment.fastack = 0 - segment.resendts = current + segment.rto - change++ - fastRetransSegs++ + lastsend := segment.resendts - segment.rto + if _itimediff(current, lastsend) >= int32(kcp.rx_srtt) { // rtt + needsend = true + segment.xmit++ + segment.fastack = 0 + segment.resendts = current + segment.rto + change++ + fastRetransSegs++ + } } else if segment.fastack > 0 && !hasPending { // early retransmit lastsend := segment.resendts - segment.rto - if _itimediff(current, lastsend) > int32(kcp.rx_rto/4) { // 1/4 rtt + if _itimediff(current, lastsend) >= int32(kcp.rx_srtt) { // 1/4 rtt needsend = true segment.xmit++ segment.fastack = 0