Skip to content

更新maxack时判断ts使用的是大于,导致一些情况fastack未正确更新 #438

Description

@xhz636

ikcp_input函数中,处理IKCP_CMD_ACK这段逻辑,在更新maxack时,由于比较tslatest_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的逻辑应该需要使用>=比较合理?

Image

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions