xfy911
|
87bae245d2
|
build(phase4): 更新构建系统与文档,集成 Phase 4 模块
- CMakeLists.txt: 新增 middleware_ext.c、load_balance.c、grpc.c、
http3.c 到源文件列表和单元测试列表
- Makefile: 更新 SRCS,新增 4 个模块的单元测试编译规则
- README.md: 新增 Phase 4 特性(JWT Auth、负载均衡、gRPC、HTTP/3)、
模块说明表、路线图标记全部完成、测试统计(451 单元测试)
- .cocoon-plan.md: Phase 4 全部标记为完成,更新当前状态与行动记录
|
2026-06-10 11:36:59 +08:00 |
|
xfy911
|
525cd8954c
|
docs(plan): 更新维护状态记录
|
2026-06-10 09:05:00 +08:00 |
|
xfy911
|
43d5f6d54e
|
docs(readme): 标记虚拟主机为完成,更新发展规划
- README 路线图:虚拟主机 / 多站点标记为 ✅ 完成
- .cocoon-plan.md:重构为完整历史记录,包含所有功能完成时间线
- 项目进入维护阶段,所有 Phase 1-3 功能已完成
|
2026-06-10 06:03:49 +08:00 |
|
xfy911
|
528291c7e5
|
feat(server): SIGHUP 配置热重载
- server.h/server.c: 新增 server_request_reload() 和 server_reload_config()
- server_create() 新增 config_file_path 参数
- 热重载范围: root_dir, log_level, access_log, gzip/brotli, timeout, max_connections, vhosts, proxies, healthcheck
- 保守策略: 不释放旧字符串指针,避免活跃连接竞态
- accept_loop() 在 accept() 后也检查 reload_requested,确保新连接使用最新配置
- main.c: 新增 sighup_handler() 注册 SIGHUP 信号
- tests/integration_test.sh: 新增 SIGHUP 热重载集成测试 (3项)
- 190 单元测试 + 109 集成测试全部通过,编译零警告
|
2026-06-10 03:41:10 +08:00 |
|
xfy911
|
e6b4a11d16
|
feat(http2): HTTP/2 代理流式转发
- 新增 proxy_data_source_read_callback:实时从后端读取数据流式转发
- http2_serve_proxy 重构:解析响应头后立即发送,body 通过 DATA 帧实时转发
- 解除 64KB 响应缓冲区限制,支持任意大小响应体
- 流结构新增代理字段(backend_fd/tls_conn/eof/close_backend/backend)
- 已缓存 body(recv_headers 预读部分)优先发送,再续读后端
- 连接池归还/关闭自动处理
|
2026-06-10 00:22:46 +08:00 |
|
xfy911
|
2280b318a8
|
docs(plan): 更新计划,标记 proxy 单元测试完成(31项,190个单元测试全部通过)
|
2026-06-09 21:11:53 +08:00 |
|
xfy911
|
0e7de9400c
|
test(healthcheck): 新增主动健康检查单元测试(17项)
- 覆盖 healthcheck_parse_status 状态码解析(正常/异常/边界)
- 覆盖 healthcheck_build_request 请求构建(默认路径/自定义路径/空路径)
- 覆盖 healthcheck_update_state 状态机(阈值恢复/阈值失败/计数器重置/时间戳)
- 覆盖 healthcheck_probe_once NULL 防护
- 使用 #include healthcheck.c 白盒测试技巧访问静态函数
- Makefile: 新增 test_healthcheck 编译规则
- .cocoon-plan.md: 标记主动健康检查完成,更新单元测试总数 159
编译零警告,159 个单元测试 + 106 项集成测试全部通过。
|
2026-06-09 18:16:35 +08:00 |
|
xfy911
|
60ef9ed908
|
feat(vhost): 虚拟主机/多站点支持
- cocoon.h: 新增 cocoon_vhost_t 结构体和 COCOON_MAX_VHOSTS 宏
- config.c: JSON 解析器新增 vhosts 数组解析
- server.c: HTTP/1.1 请求根据 Host 头匹配虚拟主机 root_dir
- http2.h/c: HTTP/2 根据 :authority 匹配虚拟主机,存储为 Host 头
- http2.c: 新增 http2_session_set_server_config() API
- cocoon.json: 添加 vhosts 配置示例
- tests: 新增 3 项虚拟主机集成测试
- 编译零警告,142 单元测试 + 106 集成测试全部通过
|
2026-06-09 15:28:57 +08:00 |
|
xfy911
|
8516261d34
|
docs(plan): 更新计划,标记连接池 HTTP/1.0 兼容完成
- 待办池:连接池 HTTP/1.0 兼容 → ✅
- 测试数:93 → 99 项
- 添加 2026-06-09 12:00 行动记录
|
2026-06-09 12:36:58 +08:00 |
|
xfy911
|
25a0b100c1
|
docs(plan): 更新计划,标记 HTTP/2 代理完成,新增连接池 HTTP/1.0 兼容待办
|
2026-06-09 09:39:56 +08:00 |
|
xfy911
|
9000cdb23a
|
docs(plan): 更新计划,标记加权轮询完成,新增 HTTP/2 代理待办
|
2026-06-09 06:08:30 +08:00 |
|
xfy911
|
23574ab2ba
|
feat(proxy): 连接池大小可配置(默认4,最大16)
- proxy.h: COCOON_MAX_POOL_SIZE → COCOON_POOL_MAX_CAPACITY(16) + COCOON_POOL_DEFAULT_SIZE(4)
- proxy.c: proxy_pool_init 接收 max_pool_size,自动裁剪到上限
- proxy.c: proxy_add_rule 新增 pool_size 参数
- cocoon.h: 配置结构新增 pool_size 字段
- config.c: JSON 解析 pool_size 数字字段,默认值为 4
- server.c: 调用 proxy_add_rule 时传入配置值
- cocoon.json: 示例配置添加 pool_size 展示
编译零警告,142 单元测试 + 90 集成测试全部通过。
|
2026-06-09 03:06:50 +08:00 |
|
xfy911
|
ff1b56fc9e
|
docs(plan): 更新计划,标记连接池完成
- 待办池:连接池完成,新增 HTTP/2 代理支持待办
- 最近行动记录:新增 2026-06-09 连接池/keep-alive 条目
|
2026-06-09 00:21:59 +08:00 |
|
xfy911
|
e13ff5402a
|
feat(proxy): 后端连接池/keep-alive,避免每次请求新建 TCP
- proxy.h: 新增 cocoon_pooled_conn_t / cocoon_conn_pool_t (pthread_mutex 保护)
- 每个后端最多4个空闲连接,30秒空闲超时
- 支持 HTTP 和 HTTPS 后端,复用 tls_conn / fd
- proxy.c: 实现 proxy_pool_init/destroy/acquire/release + proxy_config_destroy
- proxy.c: proxy_relay_backend 使用连接池获取/归还,向后端发送 Connection: keep-alive
- proxy.c: 修复后端关闭连接后复用导致客户端超时的问题
- recv 返回 0 时不再归还到池中,直接关闭并重建
- server.c: server_destroy 调用 proxy_config_destroy 清理所有连接池
- 编译零警告,142 单元测试 + 90 集成测试全部通过
|
2026-06-09 00:21:22 +08:00 |
|
xfy911
|
c3716cd704
|
docs(plan): 更新计划文件,标记健康检查与 SIGPIPE 修复完成
|
2026-06-08 21:27:48 +08:00 |
|
xfy911
|
61d9b01ed6
|
docs(plan): 更新 Prometheus 指标端点开发记录
- 标记反向代理负载均衡和 Prometheus 指标为完成
- 更新项目状态:142 单元测试 + 90 集成测试全部通过
- 记录 /_metrics 端点实现详情
|
2026-06-08 18:11:10 +08:00 |
|
xfy911
|
c3d4b112d7
|
docs(config+plan): 负载均衡示例 + 开发记录更新
- cocoon.json: 展示多后端负载均衡配置(/api -> 3000/3001)
- .cocoon-plan.md: 标记负载均衡完成,更新待办池和最近行动记录
|
2026-06-08 16:17:14 +08:00 |
|
xfy911
|
a2444e18de
|
docs(plan): 再次恢复开发 — 用户指示继续 cocoon,不暂停
|
2026-06-08 15:58:56 +08:00 |
|
xfy911
|
06e34e5a39
|
docs(readme): 更新反向代理文档与配置示例
- 特性列表新增反向代理条目
- 路线图标记反向代理为完成
- 模块职责表新增 proxy.c / proxy_tls.c
- 新增配置文件示例(含反向代理配置)
|
2026-06-08 12:04:29 +08:00 |
|
xfy911
|
4cb840c464
|
docs(plan): 更新开发记录 — 恢复开发 + HTTPS 反向代理完成
|
2026-06-08 11:38:11 +08:00 |
|
xfy911
|
de88bbc692
|
docs(plan): 恢复项目开发 — 用户指示继续 cocoon,暂停 ephemeral 方向
|
2026-06-08 11:25:08 +08:00 |
|
xfy911
|
b6edd5ef67
|
docs(plan): 更新维护检查记录 — 2026-06-08 09:00
|
2026-06-08 09:01:50 +08:00 |
|
xfy911
|
b289a09898
|
docs(plan): 更新维护检查记录 — 2026-06-08 06:00
|
2026-06-08 06:02:03 +08:00 |
|
xfy911
|
f3d53af5de
|
docs(plan): 更新维护检查记录 — 2026-06-08 03:00
|
2026-06-08 03:01:23 +08:00 |
|
xfy911
|
61d8af0a8a
|
docs(plan): 更新维护检查记录 — 2026-06-08 00:00
|
2026-06-08 00:05:59 +08:00 |
|
xfy911
|
e2bceeaa44
|
docs(plan): 更新维护检查记录 — 2026-06-07 21:00
|
2026-06-07 21:02:21 +08:00 |
|
xfy911
|
2a5ce429db
|
docs(plan): 更新维护检查记录 — 2026-06-07 18:00
|
2026-06-07 18:02:51 +08:00 |
|
xfy911
|
2fa7e538a8
|
docs(plan): 标记项目暂停,核心任务转向 ephemeral
|
2026-06-07 12:01:40 +08:00 |
|
xfy911
|
81be40086f
|
docs(plan): 更新规划文件 — 标记 Doxygen 注释完成并更新待办池
|
2026-06-07 09:06:12 +08:00 |
|
xfy911
|
3762343889
|
docs(plan): 更新规划文件 — 标记编译警告修复完成
|
2026-06-07 06:07:22 +08:00 |
|
xfy911
|
cc06fc073f
|
feat(proxy): 实现反向代理支持
- 新增 proxy.h / proxy.c:路径前缀匹配 → HTTP/1.1 后端转发
- proxy_init/add_rule/match/forward API
- X-Forwarded-For / X-Forwarded-Proto 透传
- 目前仅支持 HTTP 后端,HTTPS 后端拒绝并警告
- cocoon.h:新增 COCOON_MAX_PROXY_RULES=8,cocoon_config_t 添加 proxies 数组
- config.c:JSON 解析器新增 proxies 数组解析(prefix + target)
- server.c:
- connection_t 新增 ctx 指针,用于 handle_request 访问代理配置
- handle_request 中在静态文件服务前检查代理规则
- Makefile:proxy.c 加入 SRCS 和 test_server 编译规则
- cocoon.json:示例配置添加 proxies 数组
- tests/integration_test.sh:新增 3 项反向代理集成测试
- .cocoon-plan.md:标记反向代理为已完成
编译零警告,142 个单元测试 + 80 项集成测试全部通过。
|
2026-06-07 03:09:10 +08:00 |
|
xfy911
|
b04904cc78
|
docs(plan): 更新规划文件 — 标记 HTTP/2 POST 支持完成
|
2026-06-07 00:06:04 +08:00 |
|
xfy911
|
4105aec916
|
feat(websocket): 实现 WebSocket 空闲超时处理 + 跨平台 poll/select 抽象
- platform.h / platform.c: 新增 cocoon_socket_poll_readable() 跨平台 socket 可读等待
- POSIX: poll() + POLLIN
- Windows: select() + fd_set(readfds)
- websocket.c: ws_handle_connection() 实现 timeout_ms 空闲超时处理
- 每次循环前调用 poll_readable() 等待数据或超时
- 超时时发送 1001 Idle timeout 关闭帧,清理连接资源
- 解决遗留 TODO: /* TODO: 超时处理 */
- tests/websocket_test.py: 新增 test_timeout() 测试
- 连接后不发帧,验证服务端 2 秒后发送 1001 关闭帧
- tests/integration_test.sh: 新增 WebSocket 空闲超时集成测试
- 启动 -o 2000 短超时服务器验证超时行为
- Makefile: 补全 test_websocket 编译规则,加入 platform.c
- 修复 undefined reference 错误
- 全部 142 单元测试 + 77 集成测试通过,编译零警告
|
2026-06-06 21:16:54 +08:00 |
|
xfy911
|
f868128b75
|
docs(plan): 更新规划文件 — 标记 CI、Makefile、README 更新完成
- 添加 CI 自动化、Makefile 测试目标完善、README 同步更新到已完成列表
- 记录本轮行动记录
|
2026-06-06 18:09:57 +08:00 |
|
xfy911
|
e77e83e0c8
|
docs(plan): 更新规划文件 — 标记插件热重载完成
|
2026-06-06 15:11:52 +08:00 |
|
xfy911
|
4b647cd540
|
docs(plan): 更新规划文件 — 标记健康检查端点完成
- 集成测试数量更新为 75 项
- 单元测试数量更新为 142 个
- 添加最近行动记录
|
2026-06-06 12:09:50 +08:00 |
|
xfy911
|
b5acd7f5d1
|
docs(plan): 更新规划文件 — 标记插件数组支持完成
|
2026-06-06 09:08:05 +08:00 |
|
xfy911
|
f2231756a3
|
docs(plan): 更新规划文件 — 标记 WebSocket 单元测试完成
- 标记 Phase 2 WebSocket 单元测试完成(12 项测试)
- 更新单元测试总数:127 → 139
- 更新集成测试总数:66 → 68
- 标记 Phase 4 插件系统完成(MVP)
- 调整待办池优先级
|
2026-06-06 06:07:06 +08:00 |
|
xfy911
|
05cc458440
|
docs(plan): 更新路线图,标记插件系统完成
|
2026-06-06 03:14:31 +08:00 |
|
xfy911
|
952cc663fe
|
feat(plugin): 实现动态插件系统(.so 加载 + 中间件注册)
新增插件系统:
- plugin.h / plugin.c:dlopen/dlsym 动态加载,最多8个插件
- 插件接口:cocoon_plugin_init / cocoon_plugin_shutdown / cocoon_plugin_version
- 插件可通过 cocoon_middleware_register() 注册中间件参与请求处理
- 命令行:--plugin <path>(可多次指定)
- 配置文件:plugins 字段(字符串,单插件路径)
- server.c 在 server_create 时加载,server_destroy 时逆序卸载
- plugins/hello.c:示例插件,演示中间件注册
- 集成测试:新增插件加载 + 日志验证测试(68项全部通过)
- 单元测试:127个全部通过
- 编译:Makefile 添加 plugin.c 和 -ldl
- .gitignore 排除编译产物和上传目录
|
2026-06-06 03:13:59 +08:00 |
|
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 |
|