AlexStocks commented on code in PR #3704:
URL: https://github.com/apache/dubbo-go/pull/3704#discussion_r3860028438


##########
protocol/triple/internal/http3config/http3_config.go:
##########
@@ -65,5 +67,34 @@ func NewQUICConfig(http3Config *global.Http3Config, defaults 
*quic.Config) (*qui
                quicConfig.MaxIncomingUniStreams = 
http3Config.MaxIncomingUniStreams
        }
 
+       if http3Config.InitialStreamReceiveWindow != "" {
+               initialStreamReceiveWindow, err := 
humanize.ParseBytes(http3Config.InitialStreamReceiveWindow)
+               if err != nil {
+                       return nil, fmt.Errorf("invalid http3 
initial-stream-receive-window %q: %w", http3Config.InitialStreamReceiveWindow, 
err)
+               }
+               quicConfig.InitialStreamReceiveWindow = 
initialStreamReceiveWindow

Review Comment:
   [P1] 这里需要在交给 quic-go 前校验窗口范围和 initial/max 关系。`ParseBytes` 只负责转成 
`uint64`:公开链探针中,YAML 的 stream `initial=16MiB, max=1MiB`、connection 
`initial=32MiB, max=2MiB` 
会无错误通过,导致初始窗口已超过用户声明的最大值;`WithHttp3Initial...ReceiveWindow(1<<62)` 也会原样进入 
`quic.Config`。固定依赖 quic-go v0.59.1 只裁剪两个 Max*,不裁剪 Initial*,也不修正 `initial > 
max`;transport parameter 最终用 62-bit QUIC varint 编码,超出 `2^62-1` 会进入 
`quicvarint.Append` 的 panic 路径。请拒绝四个字段超过 `quicvarint.Max`,并在两组值都非零时要求 `initial 
<= max`,同时补 YAML 和公开 Option 的边界/关系回归测试。



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to