更新maxack时判断ts使用的是大于,导致一些情况fastack未正确更新
xhz636 opened this issue · comments
在ikcp_input
函数中,处理IKCP_CMD_ACK
这段逻辑,在更新maxack
时,由于比较ts
与latest_ts
使用的是>
,会导致maxack
未更新到最新的sn
举例:在一次ikcp_flush
中,发送了4个包,则这4个包的ts
都是一致的,假设这4个包的sn
分别是1,2,3,4,此时如果对端只收到了sn
为2,4的包,并返回了ack,本地在处理ack时,第1个ack会将maxack
设置为2,latest_ts
设置为ts
,而第2个ack由于ts
一致,导致无法将maxack
更新到4,因此在ikcp_parse_fastack
中更新faskack
时,sn
为3的包不会触发fastack++
因此,对比latest_ts
的逻辑应该需要使用>=
比较合理?