|
|
556caf4412
|
build(makefile): 添加 platform.c 和 Windows 链接选项
- 源文件列表添加 platform.c
- LDFLAGS 添加 -lbrotlienc
- Windows (MinGW) 下自动链接 ws2_32
- 单元测试编译规则添加 platform.c
|
2026-06-05 00:51:02 +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
|
fb457e35ec
|
test(server): 新增服务器核心 null 安全与生命周期测试
- test_create_null_config: NULL config 返回 NULL
- test_create_null_root_dir: 无 root_dir 提前返回 NULL
- test_stop_null / test_destroy_null: NULL 指针不 crash
- test_create_and_destroy: 正常创建+停止+销毁生命周期(高位端口避免冲突)
- Makefile: 添加 test_server 编译规则,链接全部依赖 + libcoco
|
2026-06-04 00:26:29 +08:00 |
|
xfy911
|
0d8c36ef25
|
build: 统一 _GNU_SOURCE 宏定义到 Makefile
- config.c/http.c/static.c/server.c: 移除各自的 #define _GNU_SOURCE
- Makefile CFLAGS: 添加 -D_GNU_SOURCE,保证所有翻译单元一致
- 避免重复定义,减少源文件样板代码
|
2026-06-04 00:17:55 +08:00 |
|
xfy911
|
3c521823b1
|
feat(tests): 添加 config 和 log 模块单元测试 + http.c 缓冲区溢出防护
- 新增 test_log.c: 8 个测试覆盖日志级别 getter/setter、前缀设置、持久化
- 新增 test_config.c: 11 个测试覆盖 JSON 配置加载、注释支持、错误处理、merge 覆盖逻辑
- http.c: 修复 response header 格式化中的 snprintf 边界条件,防止缓冲区溢出
- Makefile: 添加 test_log、test_config 编译规则,更新 .PHONY 列表
|
2026-06-04 00:02:18 +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
|
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
|
5adf5e0581
|
fix(build): 修复 Range 解析嵌套问题 + 补充 errno 头文件 + 链接 zlib
- http.c: 修复 Range 请求解析被错误嵌套在 accept-encoding 分支的 bug
- static.c: 补充缺失的 <errno.h> 和 <zlib.h> 头文件,修复编译失败
- Makefile: 添加 -lz 链接参数,支持 gzip 压缩功能
|
2026-06-03 18:18:33 +08:00 |
|
xfy911
|
0dc2bb5b4e
|
feat(server): 连接空闲超时 + 最大并发限制 + 分级日志
- 新增 log.c/log.h 分级日志系统(error/warn/info/debug)
- 新增连接空闲超时管理:使用 coco_timer + shutdown + coco_cancel
自动清理长时间无数据的僵尸连接,默认 30 秒
- 新增最大并发连接数限制(-m <num>),超限返回 503
- 命令行新增选项:-m 最大连接数, -o 超时毫秒, -l 日志级别
- 替换所有 printf 为 log_info/log_error/log_debug 等分级输出
- 编译通过,单线程/多线程模式均正常
|
2026-06-03 18:13:29 +08:00 |
|
xfy911
|
d6cbf5a3e3
|
deps: add xfy911/coco as git submodule (fork with fixes)
|
2026-06-03 17:44:52 +08:00 |
|
xfy911
|
250f336eff
|
fix(build): 修复编译错误与警告
- Makefile: 添加 -luring 链接(coco 内部使用 io_uring)
- static.c: 添加 #include <time.h> 和 _GNU_SOURCE 定义
- http.h: 添加 #include <stddef.h> 修复 size_t 未定义
- server.c: 删除未使用的 conn_write,修复 root_dir 传递
|
2026-06-03 16:55:48 +08:00 |
|
xfy911
|
84b415470b
|
chore: 初始化项目骨架(README + Makefile + .gitignore)
|
2026-06-03 16:42:10 +08:00 |
|