Repository navigation
tracking: HTTP/3 features needed by uvscope 0.4 #53
Copy link
Copy link
Closed
Labels
enhancementNew feature or requestNew feature or request
Description
uvscope 0.4 的 HTTP/3 / QUIC 调试依赖清单。每一项单独提交、单独验证;在清单完成前,uvscope 发布构建保持关闭 h3。
清单
- HTTP/3:GOAWAY(平滑退场、last stream id)——
1e2de0f(2026-10-20)。
uvcpp_h3_connection::shutdown_notice()/shutdown()/is_drained(),
对端 GOAWAY 走callbacks::on_goaway+peer_goaway_received()/
peer_goaway_last_stream_id();uvcpp_http_client同名转发并把id以上的
在途请求标retryable。用例http3_goaway_func。 - HTTP/3:trailers ——
53dac78(2026-10-20)。会话/连接层trailers字段与
submit_trailers();web 层uvcpp_http_request/response::trailers。用例
http3_trailers_func。请求 trailers 要求有 body(nghttp3 语义)。 - HTTP/3:extended CONNECT(WebSocket over h3)——
1023c0f前一批已完成:
enable_connect_protocol+:protocol+uvcpp_h3_ws_connection(RFC 6455 帧、
无掩码;无 permessage-deflate)。用例http3_ext_connect_func/http3_ws_func。 - QUIC:0-RTT 发送与
early_data状态 ——1023c0f。服务端set_max_early_data();
客户端票据 + 0-RTT 传输参数复用、握手前写数据;early_data_status()/
early_data_rejected()(0 NOT_SENT / 1 REJECTED / 2 ACCEPTED)。用例
quic_early_data_func(本机 ACCEPTED)。无状态重置与 multipath 仍没有。 - QUIC:连接迁移事件与路径变化通知 ——
517428b+86867e0。
被动通知on_path_validation/on_path_changed;客户端主动迁移
uvcpp_quic_client::migrate_local_address()。用例quic_migration_func/
quic_active_migration_func。 - QUIC:datagram(RFC 9221)收发 ——
5709aa2(2026-10-20)。
uvcpp_quic_connection::send_datagram()/callbacks::on_datagram/
max_datagram_size();宣告max_datagram_frame_size=1400,发送队列 1 MiB
上限。用例quic_datagram_func。 - QUIC:原始 bidi/uni stream 的公开收发接口(用于调试器)—— 1.4.1 起已有:
uvcpp_quic_connection::open_stream(bool bidi)/write_stream()/
callbacks::on_read/on_stream_open/on_streams_available。无需新增。 - QPACK:部分可观测(
86867e0):对端 SETTINGS(表容量/阻塞流上限)与
deferred_consume计数已暴露。精确的当前动态表大小/当前阻塞流数仍拿不到
—— nghttp3 1.18 公开头没有访问器(tracking: HTTP/3 features needed by uvscope 0.4 #53 里唯一剩下的阻塞项)。 - 三平台 CI 已覆盖(
http3/quic格);真实公网端点回归加了按需探针
http3_public_endpoint_func(UVCPP_TEST_H3_ENDPOINT=host:port,默认 SKIP;
本机沙箱的 DNS 被劫持到 198.18/15,实际回归要在有外网的机器上跑)。
备注
#53的其余项(trailers / 0-RTT / 迁移 / datagram / extended CONNECT)是协议级
特性,不是接线:每一项都要动uvcpp_quic_session的收/发路径(datagram 还要在
do_flush里接ngtcp2_conn_writev_datagram)或uvcpp_h3_session的头块状态机
(trailers 是同一流上的第二个头块),并按 issue 的规矩逐项提交、逐项验证。- 0-RTT / 连接迁移在
doc/quic-guide.md§8 里一直标注为"不在路线图上,等真实需求",
这项清单把它们提到了 0.4 的依赖里;动之前需要确认 uvscope 侧的具体契约
(early_data 失败的接受语义、迁移时应用层要不要看到路径变化)。
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request
Activity
feat(h3): GOAWAY / 平滑退场(#53)
feat(quic): DATAGRAM(RFC 9221)收发(#53)
feat(h3): trailers(#53)
feat(quic): 连接迁移的路径事件(#53)
version(1.8.2): 发布态 —— uvscope 批次(#44–#54、#50–#53)
feat(h3/quic): extended CONNECT 协议层、QPACK 部分可观测、主动迁移、公网探针(#53)
feat(h3): WebSocket over HTTP/3(RFC 9220,#53)
feat(quic): 0-RTT(#53)
Antruly commentedon Oct 20, 2026
QPACK 精确统计的上游请求已开:ngtcp2/nghttp3#566(英文说明当前公开面缺口与建议的 getter/stats 形状)。等上游回复后再决定是否做 PR;在这之前 #53 的这一格按上游 API 缺失记为阻塞。
Antruly commentedon Oct 28, 2026
清单全部勾完:GOAWAY、trailers、extended CONNECT(WebSocket over h3)、0-RTT、连接迁移、DATAGRAM、原始流、QPACK 部分可观测(精确动态表大小受 nghttp3 公开头限制,已在条目里如实标注)。1.9.0 又补了 h3 的 webapp 尾随头与流式响应。这条 tracking 关闭。