Skip to content

Commit 9158f84

Browse files
author
skywind3000
committed
update rto calculation
1 parent cf68371 commit 9158f84

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

ikcp.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1056,9 +1056,11 @@ void ikcp_flush(ikcpcb *kcp)
10561056
segment->xmit++;
10571057
kcp->xmit++;
10581058
if (kcp->nodelay == 0) {
1059-
segment->rto += kcp->rx_rto;
1059+
segment->rto += _imax_(segment->rto, (IUINT32)kcp->rx_rto);
10601060
} else {
1061-
segment->rto += kcp->rx_rto / 2;
1061+
IINT32 step = (kcp->nodelay < 2)?
1062+
((IINT32)(segment->rto)) : kcp->rx_rto;
1063+
segment->rto += step / 2;
10621064
}
10631065
segment->resendts = current + segment->rto;
10641066
lost = 1;

test.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ void test(int mode)
7070
// 第三个参数 interval为内部处理时钟,默认设置为 10ms
7171
// 第四个参数 resend为快速重传指标,设置为2
7272
// 第五个参数 为是否禁用常规流控,这里禁止
73-
ikcp_nodelay(kcp1, 1, 10, 2, 1);
74-
ikcp_nodelay(kcp2, 1, 10, 2, 1);
73+
ikcp_nodelay(kcp1, 2, 10, 2, 1);
74+
ikcp_nodelay(kcp2, 2, 10, 2, 1);
7575
kcp1->rx_minrto = 10;
7676
kcp1->fastresend = 1;
7777
}

0 commit comments

Comments
 (0)