From 832ff3dbf6a22574fc4dda6dbe7fa52132475f4f Mon Sep 17 00:00:00 2001 From: xfy911 Date: Thu, 4 Jun 2026 14:44:55 +0800 Subject: [PATCH] =?UTF-8?q?docs(plan):=20=E6=9B=B4=E6=96=B0=20HTTP/2=20?= =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=8A=B6=E6=80=81=EF=BC=8C=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=BE=85=E5=8A=9E=E4=BC=98=E5=85=88=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cocoon-plan.md | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/.cocoon-plan.md b/.cocoon-plan.md index bb980bd..7372cc6 100644 --- a/.cocoon-plan.md +++ b/.cocoon-plan.md @@ -34,7 +34,7 @@ - [x] **配置文件支持** — JSON 配置替代纯命令行 ✅ 2026-06-04 - [x] **Brotli 压缩** — 比 gzip 更高压缩率 ✅ 2026-06-04 - [x] **HTTPS / TLS** — OpenSSL Memory BIO 集成,支持命令行与配置文件启用 ✅ 2026-06-04 -- [ ] HTTP/2 — nghttp2 骨架完成(编译通过),待 server.c 集成 ✅ 2026-06-04 +- [x] **HTTP/2** — nghttp2 骨架 + server.c 集成(TLS ALPN 协商),待静态文件服务接入 ✅ 2026-06-04 - [ ] Windows 兼容性 ### Phase 4 — 生态 @@ -51,27 +51,29 @@ - POST 支持:JSON 和 form-urlencoded 回显,multipart 文件上传,Content-Length 解析,8MB 上限 - **配置文件支持**:JSON 格式,8 个字段,命令行参数可覆盖 - **TLS/HTTPS**:OpenSSL 3.0 Memory BIO + coco 协程集成,自签名证书支持,sendfile 降级为缓冲读写 -- **HTTP/2**:nghttp2 骨架完成(编译通过),流管理、回调框架就绪,待 server.c 集成(ALPN 协商、h2c 升级) +- **HTTP/2**:nghttp2 骨架 + server.c 集成(TLS ALPN 协商),静态文件服务待接入,h2c 升级待实现 ## 待办池 -1. **[高] HTTP/2 多路复用** — 长期演进方向 -2. **[中] Windows 兼容性** — 平台抽象层(platform.h / platform.c) -3. **[中] Doxygen 中文注释** — 所有模块的公共 API 需要完整文档 -4. **[低] 检查远程更新内容** — 上游有 new commits,需 review 9041d8d +1. **[高] HTTP/2 静态文件服务接入** — 将 static_serve_file 接入 nghttp2 流回调 +2. **[高] h2c 升级支持** — 明文 HTTP/2 升级(PRI 方法 + 魔术字) +3. **[中] Windows 兼容性** — 平台抽象层(platform.h / platform.c) +4. **[中] Doxygen 中文注释** — 所有模块的公共 API 需要完整文档 +5. **[低] 检查远程更新内容** — 上游有 new commits,需 review 9041d8d ## 最近行动记录 -- **2026-06-04: 本轮行动 — HTTP/2 骨架实现** - - 新增 `http2.c` / `http2.h`:基于 nghttp2 的 HTTP/2 会话管理 - - 会话管理:fd → session 映射,最大 1024 并发会话 - - 流管理:链表结构,支持请求解析和响应发送 - - nghttp2 回调:send/receive、header 解析、frame 接收、stream 关闭 - - 修复编译:匹配 `http_request_t` 结构(`num_headers`/`headers[]`),使用 `log_error` 替代 `LOG_ERROR` +- **2026-06-04: 本轮行动 — HTTP/2 骨架 + server.c 集成** + - 新增 `http2.c` / `http2.h`:基于 nghttp2 的 HTTP/2 会话管理(431 行) + - 修复编译:匹配 `http_request_t` 结构,使用 `log_error` 替代 `LOG_ERROR` + - server.c: 添加 `handle_http2()` 函数,在 `client_handler` 中检测 HTTP/2 连接 + - TLS ALPN 协商后自动创建 HTTP/2 会话 + - HTTP/2 连接走独立处理路径(帧读写循环) + - tls.c/tls.h: 新增 `tls_negotiated_http2()`,检查 ALPN 是否协商为 h2 - Makefile:加入 `http2.c`、链接 `-lnghttp2` - - 编译通过,零警告(除 coco 子模块 linker 提示) + - 编译通过,39 项集成测试 + 127 单元测试全部通过 - 推送到 main - - **待完成**:server.c 集成(TLS ALPN 协商、明文 h2c 升级魔术字检测) + - **待完成**:HTTP/2 静态文件服务接入(nghttp2 流回调)、h2c 升级 - **2026-06-04: 本轮行动 — 实现 TLS/HTTPS 支持** - 新增 `tls.c` / `tls.h`:OpenSSL 3.0 Memory BIO 与 coco 协程 I/O 集成 - `cocoon.h`:新增 `tls_enabled`, `tls_cert`, `tls_key` 配置字段