
curl 8.22.0 于 2026 年 9 月 2 日发布,修复了 IPv6 字面量目标经非隧道 HTTP 代理访问时的失败。curl 项目将其概括为修正非隧道代理的主机名使用。底层报告显示,客户端返回 CURLE_OUT_OF_MEMORY,但系统并未真正耗尽内存。
报告中的流程先成功连接代理,随后在构造代理请求 URL 时失败。内部 IPv6 主机表示缺少 URL 主机所需的方括号,URL 设置操作失败,外层路径因此返回了误导性的内存错误。curl 8.22 修正了正向代理请求使用的主机表示。
该修复适用于通过 HTTP 代理访问 IPv6 端点的数据采集、市场研究和可用性检查。它是范围明确的客户端修复,并不代表代理网络普遍中断。
哪种请求需要优先测试
当目标是 IPv6 字面量、客户端使用 HTTP 正向代理、请求为未使用 CONNECT 的普通 HTTP、curl 需要为代理构造绝对形式请求目标,并且应用会将内存错误视为资源告警时,应优先回归。
HTTPS 代理通常进入隧道路径;DNS 主机名解析得到 IPv6 也不同于在 URL 中直接写 IPv6 地址,必须分别测试。
为什么错误会误导运营
“内存不足”可能触发工作进程重启、扩容、堆分析或熔断。但在该报告中,代理连接已经建立,失败来自 URL 主机格式,而不是内存耗尽。
升级后不能只检查错误文字是否消失,还要确认代理收到语法正确的请求、IPv6 authority 完整保留,并验证最终响应来自预期的受控端点。
相关 IPv6 重试可参考curl IPv6 scope 重试更新,若要区分地址变化与会话策略,可使用住宅代理会话粘性测试。
构建受控回归矩阵
使用组织拥有或获准测试的正向代理和端点,准备 IPv4 字面量 HTTP、IPv6 字面量 HTTP、可用时包含双栈的 DNS 主机名,以及通过正常隧道路径访问的 HTTPS 对照。
每个案例分别直连和经授权代理运行。保持代理凭据、请求头、超时与响应校验一致,只请求很小且确定的内容,并限制频率。
记录请求阶段
记录 curl/libcurl 运行版本、目标类别、直连/正向代理/CONNECT 路径、代理解析与连接结果、代理 TCP 是否建立、请求目标与 authority 校验、错误码与发生阶段、HTTP 状态、内容验证,以及新建或复用连接。
必须隐藏代理密码、认证头、Cookie、Token、客户目标和业务数据,不能公开包含凭据的原始 trace。
curl 8.22 的预期结果
对合法且受控的 IPv6 字面量非隧道代理请求:代理连接正常建立;IPv6 authority 在 URL 表示中保持有效;该路径不再返回误导性的内存错误;代理收到预期请求;最终状态和正文通过与直连对照相同的验证。
无效 URL 仍必须失败。修复不能让畸形地址通过,也不能绕过代理、TLS 或主机策略。
上线验证
确认服务进程实际加载的 libcurl,尤其关注容器、静态程序和语言绑定。升级至 curl 8.22.0 或供应商明确回移该修复的版本。
按变更流程重启或排空长期进程。先用新连接运行,再用正常连接池重复,并按失败阶段比较错误码,不要把所有失败都归类为“代理错误”。
监控 IPv6 字面量成功率、正向代理建连成功率、URL 构造错误、异常内存告警、重试放大和经过内容验证的响应。在稳定路径证明修复前,不要通过轮换出口掩盖问题。
验收清单
- [ ] 实际进程使用 curl/libcurl 8.22.0 或已记录补丁的版本。
- [ ] IPv4 字面量、IPv6 字面量和 DNS 主机名分别测试。
- [ ] 正向代理与 CONNECT 模式分别标记。
- [ ] 代理连接阶段可观察。
- [ ] IPv6 authority 语法有效且完整。
- [ ] 修复路径不再出现该误导性内存错误。
- [ ] 最终状态与内容均经过验证。
- [ ] 比较新连接与复用连接。
- [ ] 重试和出口轮换不掩盖首次失败。
- [ ] 日志不包含凭据和生产数据。
常见问题
curl 真的内存不足吗?
在报告的复现中不是。错误来自代理请求构造阶段的 IPv6 主机表示失败。
所有 IPv6 请求都会受影响吗?
不会。报告范围是 IPv6 字面量目标经非隧道 HTTP 代理的路径;DNS 主机名、直连和 CONNECT 都是不同路径。
应用可以忽略内存错误吗?
不可以。真实资源故障仍然严重。应升级并按阶段分类错误,而不是因为一个已修复路径就全局忽略错误码。
轮换代理能解决吗?
不能修复客户端 URL 构造。应保持一条稳定授权路径,升级客户端并验证请求与响应。
来源与合规说明
内部研究依据:curl 项目于 2026 年 9 月 2 日发布的 curl 8.22.0 公告;curl 项目问题“Proxied connections to IPv6 hostnames fail with CURLE_OUT_OF_MEMORY”,于 2026 年 7 月 23 日提出。外部资料 URL 仅保存在内部运营记录中,公开文章不含外部链接。
只测试自己拥有或获准评估的代理、IPv6 端点和网络,并遵守服务商限制、隐私义务、服务条款与变更流程。