CAICAIIs opened a new pull request, #3299:
URL: https://github.com/apache/dubbo-go/pull/3299
## Summary
This PR implements a minimal MVP for issue #3102 (PR1) by adding the
server-side HTTP/3 QUIC config infrastructure only.
It extends `global.Http3Config` with 4 core fields and wires them into
Triple HTTP/3 server startup through a shared helper that maps config into
`quic.Config`.
This PR intentionally does **not** add support for the deprecated `config`
package path, in line with the ongoing removal direction discussed in #3204.
## What changed
### 1. Extend `global.Http3Config`
Added these fields to `global.Http3Config`:
- `KeepAlivePeriod string`
- `MaxIdleTimeout string`
- `MaxIncomingStreams int64`
- `MaxIncomingUniStreams int64`
Also updated clone/default tests accordingly.
### 2. Add shared QUIC config helper
Added a shared helper under Triple runtime code to map `global.Http3Config`
into `*quic.Config`.
Behavior:
- fields only take effect when explicitly configured
- unset values preserve existing/default behavior
- invalid duration strings return explicit errors
### 3. Wire server-side HTTP/3 startup
Reused the same helper in both server paths:
- `startHttp3`
- `startHttp2AndHttp3`
This fixes the previous `QUICConfig: &quic.Config{}` empty wiring on the
server side.
## Scope intentionally kept out
This PR does **not** change:
- HTTP/3 negotiation semantics
- client-side HTTP/3 behavior
- dual transport H2/H3 switching logic
- extra tuning fields beyond the 4 core fields
- option APIs
- deprecated `config` package compatibility for the new fields
## Why this is still an MVP
The runtime change is limited to:
- `global` config model
- Triple server-side QUIC helper
- Triple server startup wiring
- targeted tests
No client behavior or transport negotiation logic is changed.
## Tests
Ran targeted tests:
- `go test ./global -run 'TestHttp3ConfigClone|TestDefaultHttp3Config'`
- `go test ./protocol/triple/triple_protocol -run
'TestServer_RegisterMuxHandle|TestNewQUICConfig|TestServer_HTTP3PathsUseQUICConfigHelper'`
- `go test ./protocol/triple -run
'TestServer_StartWithHttp2AndHttp3|TestServer_ProtocolSelection|TestNewServer'`
## Notes
- This PR only covers **server-side infrastructure**.
- The new fields are supported through `global.Http3Config`.
- Deprecated `config`-package round-trip support for these new fields is
intentionally not added here, considering the ongoing config package removal
work in #3204.
### Checklist
- [x] I confirm the target branch is `develop`
- [x] Code has passed local testing
- [x] I have added tests that prove my fix is effective or that my feature
works
--
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]