5 Commits

Author SHA1 Message Date
xfy911
4a979a105f fix(api): 修正 COCOONForbidden 为 COCOON_FORBIDDEN
test(server): 扩展 server 单元测试覆盖(17个测试)

- 修复 cocoon.h 中 COCOONForbidden 拼写错误,统一为 COCOON_FORBIDDEN
- 新增 server 测试:
  - 空 root_dir 边界测试
  - port=0 和 port=65535 边界测试
  - 多线程配置测试
  - workers=0 自动检测测试
  - timeout 和 max_connections 配置测试
  - gzip/brotli 压缩标志测试
  - stop_then_destroy 生命周期测试
  - 多实例创建测试
  - server_start NULL 参数测试
- 单元测试总数:125 个(server 从 5→17)
- 集成测试 37 项全部通过
2026-06-04 09:03:55 +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
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
0ab3291035 feat(http): 实现 HTTP/1.1 请求解析与响应构建
- http_parse_request: 解析请求行 + 头部提取
- http_format_response_header: 格式化响应头(支持 Range)
- http_mime_type: 25+ 种常见 MIME 类型自动识别
2026-06-03 16:44:02 +08:00