Skip to content

【BUG】handleUDPPackage 的缓冲上限条件比较未初始化的 bufLen,恒为死代码 #124

Description

@NeverENG

What happened:

transport/session.go:931-934,UDP 读缓冲的上限分支比较的是尚未赋值的 bufLen:

var (
    ...
    bufLen    int      // ← 声明后未赋值,恒为 0
    maxBufLen int
    ...
)
conn = s.Connection.(*gettyUDPConn)
maxBufLen = int(s.maxMsgLen + maxReadBufLen)
if int(s.maxMsgLen<<1) < bufLen {          // ← 恒为 false:正数 < 0
    maxBufLen = int(s.maxMsgLen << 1)
}

maxMsgLen 恒为正(默认 maxReadBufLen),int(s.maxMsgLen<<1) < 0 永远不成立,
该分支是死代码。从形状看意图应是拿 maxBufLen 参与比较(对小 maxMsgLen 把缓冲
收紧到 2×maxMsgLen),写成了 bufLen。当前效果:缓冲永远按 maxMsgLen+4KB 分配,
上限逻辑完全不生效。

What you expected to happen:

条件改为比较 maxBufLen,或删掉该分支——取决于原始意图,倾向由 maintainer 定。

How to reproduce it (as minimally and precisely as possible):

代码走查可证:bufLen 在比较点恒为零值,分支为常量可判定的死代码。

Anything else we need to know?:

无运行时危害,属逻辑错误清理。

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