xfy911
|
e9d7af80b8
|
feat(http2): HTTP/2 静态文件服务支持 gzip/brotli 压缩
- http2.c: 文件内容读取到内存后按需压缩(优先 brotli,回退 gzip)
- 响应头自动添加 content-encoding: br 或 gzip
- 不可压缩类型(图片等)跳过压缩
- 修复 curl 测试:添加 --compressed 自动解压
- 新增 4 项 HTTP/2 压缩集成测试(HTML/CSS/JS brotli、图片不压缩)
- 49 项集成测试全部通过,35 个单元测试全部通过
|
2026-06-04 16:15:29 +08:00 |
|
xfy911
|
22c9f74e76
|
feat(http2): 实现 HTTP/2 静态文件服务,修复 ALPN 协商与 send_callback 返回值
主要变更:
- http2.c: 实现完整的 HTTP/2 静态文件服务(GET/HEAD、路径安全、ETag、304 缓存)
- http2.c: 修复 :path 伪头长度解析 bug(4→5)和路径空终止问题
- http2.c: 修复 send_callback 返回值 bug(send_all 返回 0 而非已发送字节数)
- http2.c: 添加 If-None-Match / If-Modified-Since 缓存头解析
- http2.h: 扩展 http2_session_t 结构体,添加 root_dir/gzip/brotli 字段
- http2.h: 新增 http2_session_set_context() 接口
- server.c: 在 handle_http2() 中调用 set_context 传入连接配置
- tls.c: 实现 ALPN 选择回调,优先协商 h2 次选 http/1.1
- tls.c: 修正 ALPN 协议格式解析(长度前缀字符串序列)
- tests/integration_test.sh: 新增 6 项 HTTP/2 集成测试(ALPN、GET、HEAD、404、缓存)
集成测试:45 项全部通过(新增 6 项 HTTP/2 测试)
单元测试:127 项全部通过
|
2026-06-04 15:45:16 +08:00 |
|
xfy911
|
6bb9635b2d
|
feat(http2): 添加 HTTP/2 支持骨架(nghttp2)
- 新增 http2.c / http2.h:基于 nghttp2 的 HTTP/2 会话管理
- 支持 TLS ALPN 协商和明文 h2c 升级
- 流级请求/响应处理,集成现有 http_request_t 结构
- 编译通过,链接 -lnghttp2
- Makefile 更新:包含 http2.c 和 nghttp2 库链接
- 待完成:server.c 集成(ALPN 协商、h2c 升级检测)
|
2026-06-04 14:40:02 +08:00 |
|