16 Commits

Author SHA1 Message Date
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
6b2d046548 chore(submodule): coco 改为 git submodule,更新构建流程
- 将 coco 作为 git submodule 引入(xfy911/coco fork)
- Makefile: 默认路径改为 coco/(submodule 目录),支持 COCO_DIR 覆盖
- Makefile: 新增 deps / build-all 目标,自动构建 coco 依赖
- README: 更新构建说明,添加 --recursive clone 和 submodule 初始化步骤
2026-06-03 17:46:37 +08:00
xfy911
d6cbf5a3e3 deps: add xfy911/coco as git submodule (fork with fixes) 2026-06-03 17:44:52 +08:00
xfy911
37c2dbc69f deps: add coco as git submodule 2026-06-03 17:43:06 +08:00
xfy911
aebacc26ef docs(plan): 更新进度 — HTTP 缓存已完成 2026-06-03 17:38:59 +08:00
xfy911
f5563381b8 feat(cache): 实现 HTTP 缓存协商(ETag + Last-Modified + 304)
- static: 添加 format_http_time / generate_etag / match_etag / parse_http_time 辅助函数
- static: 静态文件服务生成 ETag(文件大小+修改时间)和 Last-Modified
- static: 实现 If-None-Match 和 If-Modified-Since 缓存协商,命中时返回 304 Not Modified
- http: 请求结构体添加 if_none_match / if_modified_since 字段
- http: 响应头格式化支持 ETag 和 Last-Modified 输出
- http: 重构响应头构建,先输出固定头再追加缓存头

测试验证:curl 带 If-None-Match / If-Modified-Since 均返回 304
2026-06-03 17:38:28 +08:00
xfy911
413288d837 feat(http): 添加缓存头部解析 + 修复编译警告
- http: 解析 If-None-Match 和 If-Modified-Since 请求头
- http: 响应结构体添加 etag 和 last_modified 字段
- server/static: 替换 strncpy 为 snprintf,消除 stringop-truncation 警告
- static: 修复 CSS 百分号转义(%%)
- static: 消除 unused parameter 警告
2026-06-03 17:30:37 +08:00
xfy911
a30fcf6ee1 docs(plan): 添加自主发展规划文件 2026-06-03 17:22:54 +08:00
xfy911
97e16cedd7 docs(readme): 完善项目文档
- 添加 Quick Start、依赖说明、构建指令
- 补充模块职责表、核心 API 速览、安全设计
- 添加路线图与性能数据
2026-06-03 16:56:40 +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
804fa2b1fb chore(examples): 添加示例首页
- 美观的响应式 HTML 展示页面
- 展示 Cocoon 三大特性:协程驱动、静态托管、多线程调度
2026-06-03 16:48:30 +08:00
xfy911
30aac764db feat(main): 添加程序入口与命令行参数解析
- 支持 -r(根目录)、-p(端口)、-t(多线程)、-w(线程数)、-v(详细日志)
- SIGINT/SIGTERM 优雅关闭
- 自动打印使用说明
2026-06-03 16:48:24 +08:00
xfy911
da8fe6b545 feat(server): 实现基于 coco 协程的 TCP 服务器核心
- server_create/start/stop/destroy: 服务器生命周期管理
- accept_loop: 主 accept 循环(单线程/多线程模式)
- client_handler: 每个连接一个协程,支持 HTTP keep-alive
- conn_read/write: 协程安全的非阻塞 I/O 封装
- 支持多线程调度(coco_global_sched)
2026-06-03 16:47:40 +08:00
xfy911
d7b9c93e78 feat(static): 实现静态资源服务模块
- static_serve_file: 文件服务(sendfile 零拷贝 + Range 支持)
- static_serve_directory: 目录浏览(HTML 列表 + 文件大小/时间)
- static_send_error: HTTP 错误响应(400/403/404/416/500)
- safe_path_join: 路径遍历防护
2026-06-03 16:45:48 +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
xfy911
84b415470b chore: 初始化项目骨架(README + Makefile + .gitignore) 2026-06-03 16:42:10 +08:00