xfy911
|
e542890e26
|
docs(plan): 更新路线图,标记 WebSocket 广播完成,新增中间件/插件待办
|
2026-06-05 18:13:50 +08:00 |
|
xfy911
|
22c933a99d
|
merge main into feature/windows-compat-impl: resolve conflicts for TLS, HTTP/2, WebSocket, access log
|
2026-06-05 16:17:55 +08:00 |
|
xfy911
|
3ded38f331
|
docs(plan): 更新路线图,标记 WebSocket 完成,调整待办优先级
|
2026-06-05 15:19:07 +08:00 |
|
xfy911
|
c5162db508
|
docs(plan): 更新 coco 子模块升级记录,标记多线程模式问题
|
2026-06-05 03:14:22 +08:00 |
|
|
|
782bce9122
|
docs(plan): 更新 Windows 兼容性状态
- 将 Windows 兼容性标记为已完成
- 更新当前状态:跨平台抽象层 platform.h + platform.c
- 更新待办池:移除 Windows 任务,聚焦 HTTPS/TLS 和 HTTP/2
- 添加 Windows 兼容性实现详情章节
|
2026-06-05 00:51:09 +08:00 |
|
xfy911
|
3ba9fcea62
|
feat(access_log): 实现 Nginx combined 格式访问日志
- 新增 access_log.c / access_log.h:Nginx combined 格式,线程安全
- cocoon.h / config.c / config.h:支持 access_log 配置字段
- main.c:新增 --access-log CLI 选项,'-' 表示 stdout
- server.c:connection_t 扩展 client_addr/addr_len/response_status
- server.c:handle_request 中记录 response_status 并调用 access_log_write
- Makefile:加入 access_log.c,更新单元测试编译规则
- cocoon.json:示例配置添加 access_log
- 集成测试:新增 5 项访问日志测试
- 59 项集成测试全部通过,35 个单元测试全部通过
|
2026-06-05 00:20:24 +08:00 |
|
xfy911
|
3374130c8c
|
docs(plan): 更新行动记录,http2.c 注释完成
标记 Doxygen 中文注释任务进度(http2.c 已完成)。
更新最近行动记录:添加本轮 http2.c 注释详情。
|
2026-06-04 21:08:03 +08:00 |
|
xfy911
|
606c7b6b4e
|
feat(http2): 添加 HTTP/2 目录浏览支持
- 新增 http2_serve_directory() 函数,生成 HTML 目录列表页面
- 目录无 index.html 时自动返回目录浏览(与 HTTP/1.1 行为一致)
- 支持 HTML 转义、文件大小格式化、修改时间显示、上级目录链接
- 支持 HEAD 请求(不发送 body)
- 新增 2 项集成测试:HTTPS h2 目录浏览 + h2c 目录浏览
- 54 项集成测试全部通过,35 个单元测试全部通过
|
2026-06-04 18:13:48 +08:00 |
|
xfy911
|
a93e9f32f5
|
feat(h2c): 添加明文 HTTP/2 升级支持
- server.c: 检测 PRI 魔术字直接连接 + Upgrade: h2c 协商
- server.c: 101 Switching Protocols 响应,正确会话生命周期管理
- http2.h/c: 新增 http2_session_upgrade() 注册 stream 1
- http2.c: 修复 nghttp2_session_upgrade2 head_request 参数误用
- tests: 新增 4 项 h2c 集成测试(prior knowledge、Upgrade、404)
- plan: 标记 h2c 完成,更新测试计数 52 项
|
2026-06-04 17:56:44 +08:00 |
|
xfy911
|
8a80ec9d96
|
docs(plan): 修正测试计数,单元测试 35 个
|
2026-06-04 16:21:48 +08:00 |
|
xfy911
|
158c2a894e
|
docs(plan): HTTP/2 压缩已完成,更新待办池
|
2026-06-04 16:17:53 +08:00 |
|
xfy911
|
2436218d3e
|
docs(plan): 整理 Phase 3 完成状态,HTTP/2 完全可用
|
2026-06-04 15:51:12 +08:00 |
|
xfy911
|
88c6597748
|
docs(plan): 更新 HTTP/2 完成状态,调整待办优先级
|
2026-06-04 15:47:16 +08:00 |
|
xfy911
|
832ff3dbf6
|
docs(plan): 更新 HTTP/2 完成状态,调整待办优先级
|
2026-06-04 14:44:55 +08:00 |
|
xfy911
|
42879cdafd
|
docs(plan): 记录 HTTP/2 骨架完成状态
|
2026-06-04 14:40:27 +08:00 |
|
xfy911
|
cffb433c1e
|
docs(plan): 更新 TLS/HTTPS 完成状态,调整待办优先级
|
2026-06-04 14:36:16 +08:00 |
|
xfy911
|
8f9d420447
|
docs(plan): 更新发展规划,记录本轮测试扩展
- 单元测试总数:125 个(server 从 5→17)
- 更新待办池优先级和状态
|
2026-06-04 09:04:54 +08:00 |
|
|
|
ca7b33aa10
|
docs(plan): 添加 Windows 兼容性详细技术方案
- 描述目标:在 Windows 上编译运行 cocoon
- 分析核心发现:coco 库已有 Windows 支持,问题在 cocoon 的 POSIX 依赖
- 提出方案:引入 platform.h + platform.c 平台抽象层
- 列出关键 API 映射:POSIX → Windows 对照表
- 记录零拷贝策略:Windows 暂时回退到 read+send,后续用 TransmitFile 优化
- 指定执行方式:Subagent-Driven 逐个 Task 实现
|
2026-06-04 08:16:27 +08:00 |
|
|
|
0fd5ebc043
|
docs(plan): 在待办池中添加 Windows 兼容性任务
将 Windows 兼容性标记为 [高] 优先级,插入到待办池首位。
当前 cocoon 仅支持 Linux/macOS,Windows 支持是重要演进方向。
|
2026-06-04 08:16:11 +08:00 |
|
xfy911
|
ea5436febb
|
feat(compression): 添加 Brotli 压缩支持,优先于 Gzip
- static.c: 新增 brotli_compress(),使用 libbrotlienc(质量 11,窗口 22)
- static_serve_file(): 优先 Brotli,回退 Gzip,二进制文件跳过
- http.c: 解析 Accept-Encoding: br,http_request_t 新增 accept_brotli
- cocoon.h: cocoon_config_t 新增 brotli_enabled(默认 true)
- config.c/h: 解析 brotli_enabled JSON 字段,config_merge() 新增 has_brotli_enabled
- main.c: --no-brotli 命令行选项
- server.c: 连接结构体新增 brotli_enabled
- Makefile: 链接 -lbrotlienc
- 单元测试: test_static.c 新增 4 个 Brotli 测试;test_config.c 新增 brotli 配置测试
- 集成测试: 新增 5 项 Brotli 测试(br 压缩、优先策略、图片不压缩)
- cocoon.json: 添加 brotli_enabled 字段
- README: 更新特性描述、curl 示例、命令行参数、路线图
- 113 个单元测试全部通过,37 项集成测试全部通过
|
2026-06-04 06:19:42 +08:00 |
|
xfy911
|
3801f3ac0d
|
feat(config): 添加 JSON 配置文件支持 + gzip_enabled 控制 + README 修正
- config.c/config.h: 极简 JSON 解析器,支持数字/字符串/布尔//注释
- cocoon_config_t 新增 gzip_enabled 字段(默认 true)
- main.c: -c <file> 加载配置,--no-gzip 禁用压缩,命令行覆盖配置
- 修复 -r 参数 strdup 崩溃(避免 free 野指针)
- 修复 signal handler 双重 free 问题
- 单元测试: test_config.c 17 个测试全部通过
- 集成测试: 32 项全部通过
- README 修正过时描述(配置方式、安全设计、-v 说明)
|
2026-06-04 03:14:32 +08:00 |
|
xfy911
|
c036615d58
|
chore: 添加 test_server 到 gitignore + 更新待办池
- .gitignore: 补充 tests/unit/test_server,避免误提交编译产物
- .cocoon-plan.md: 新增 signal handler cleanup bug 和中文注释完善到待办池
|
2026-06-04 00:29:31 +08:00 |
|
xfy911
|
19c97ae6a9
|
test(config): 补充边界与异常路径测试
- test_load_invalid_field_type: 字段类型非法(port 为字符串),验证不 crash
- test_load_log_level_invalid: 非法 log_level 值保持默认 INFO
- test_load_nested_ignored: 嵌套对象——极简解析器返回 false 但不 crash
- test_load_array_ignored: 数组——同上,不 crash 即可
- test_merge_cmdline_null_root_dir: cmdline root_dir 为 NULL 时不覆盖 base
|
2026-06-04 00:24:29 +08:00 |
|
xfy911
|
d5b8782a1b
|
feat: 添加 Unity 单元测试框架
- 引入 Unity 测试框架 (ThrowTheSwitch)
- 创建 test_http.c (35 个测试): 请求解析、响应格式化、MIME 类型、内存管理
- 创建 test_static.c (31 个测试): 压缩判断、时间处理、ETag、路径安全、HTML 转义、gzip、socket 层
- 更新 Makefile: make unit-test 一键编译运行
- 66 个测试全部通过,集成测试保持 30 项通过
|
2026-06-03 23:53:22 +08:00 |
|
xfy911
|
bbc45d0735
|
feat(post): 添加 POST 请求体解析支持
- http_request_t 新增 body / body_len / content_type 字段
- http.c 解析 Content-Type 头,新增 http_request_free 释放 body
- server.c 新增 conn_read_body 从 socket 读取请求体(8MB 上限)
- server.c 新增 handle_post_request 返回 JSON 回显
- 支持 application/json 直接回显
- 支持 application/x-www-form-urlencoded 字符串回显
- 其他类型返回基本信息
- 8MB 请求体上限(HTTP_MAX_BODY),超限返回 413
- 集成测试新增 3 项 POST 测试:JSON 回显、表单回显、PUT 405
- 30 项测试全部通过
- README 更新:添加 POST 特性、curl 示例、路线图更新
- send_all 从 static 改为全局可见,供 server.c 复用
Phase 2 全部完成:缓存/超时/日志/gzip/测试/压测/POST
|
2026-06-03 21:24:03 +08:00 |
|
xfy911
|
b6beb8bb9c
|
feat(tests): 添加集成测试套件 + 性能基准 + 更新文档
- 新增 tests/ 目录:
- integration_test.sh: 27 项 curl/bash 集成测试(GET/HEAD/404/Range/304/gzip/MIME/目录浏览/路径防护)
- benchmark.sh: wrk 压测脚本,支持单线程和多线程模式
- fixtures/: 测试用静态资源(HTML/CSS/JS/JSON/PNG)
- Makefile 新增 test / bench 快捷目标
- README 全面更新:
- 补充 Gzip/缓存/超时/日志等已实现特性
- 更新命令行参数(-m/-o/-l/-v)
- 添加性能基准表格(~16K RPS / ~60μs 延迟)
- 路线图标记已完成项
- .cocoon-plan.md 更新 Phase 2 进度
|
2026-06-03 21:15:05 +08:00 |
|
xfy911
|
e482e52658
|
docs(plan): 更新 Phase 2 进度 — gzip 压缩已完成 + 压测数据
- 标记 gzip 压缩为已完成(3086B → 1282B,压缩率 41%)
- 记录单线程压测数据:15K RPS,64us 平均延迟,47MB/s 传输
|
2026-06-03 18:19:57 +08:00 |
|
xfy911
|
0a71365fac
|
docs(plan): 更新 Phase 2 进度 — 超时/日志已完成,gzip 待集成
|
2026-06-03 18:19:23 +08:00 |
|
xfy911
|
aebacc26ef
|
docs(plan): 更新进度 — HTTP 缓存已完成
|
2026-06-03 17:38:59 +08:00 |
|
xfy911
|
a30fcf6ee1
|
docs(plan): 添加自主发展规划文件
|
2026-06-03 17:22:54 +08:00 |
|