mORMot2 Daily每日上游提交速读

重定向限制趋于一致,POSIX 子进程等待可及时返回

HTTP 客户端现在在 WinHTTP 与 libcurl 中一致应用 RedirectMax,同时收紧 WinHTTP 的降级重定向策略,并在受支持的 Windows 版本上启用 TLS 1.3。POSIX RunRedirect 在子进程关闭 stdout 后不再等待完整轮询时限。ARM 用户还应采用 DoubleToAscii 归一化的后续修正。

要点

  • 使用 build 2.4.17538,以包含完整的重定向、TLS 与 DoubleToAscii 后续修复。
  • TWinHttp 与 TCurlHttp 现在会真正执行 RedirectMax,而不再仅把它当作开关。
  • POSIX RunRedirect 会在子进程退出时返回,不再等待配置的读取延迟。
  • WinHTTP 在 Windows 11 和 Windows Server 2022 或更高版本上提供 TLS 1.3。

升级建议

升级到 build 2.4.17538。请复测 WinHTTP 与 libcurl 的重定向上限及 HTTPS 到 HTTP 的拒绝策略、POSIX 上使用 RunRedirect 的进程启动代码,以及 ARM 上的 Double 格式化。Windows 11 与 Server 2022 部署还可验证 TWinHttp 的 TLS 1.3 协商。

版本号2.4.17531 → 2.4.17538
提交9
行数+153 -75
阅读1 分钟

7 条中的 7 条 · 上游 9 次提交

主题
# 条目 类别 单元
1 高 ARM Double 格式化读取正确的归一化字 mormot.core.text 的 d2a_diy_fp_multiply 在 mul64x64 后改为检查 PQWordRec(@result.f)^.h,不再访问 PQWordArray 的第 1 个元素,从而直接定位 64 位结果的高 32 位字。 修复 mormot.core.text 415d148c+1-1

core: fixed DoubleToAscii() normalization after mul64x64()

影响

ARM Delphi/FPC 构建不会再用错误的字归一化 Grisu 状态,从而避免此前 ARM 优化引入的 DoubleToAscii 错误输出。

zen010101 · 05:06 UTC · 在 GitHub 上查看该提交 →

2 中 POSIX RunRedirect 在子进程关闭管道后立即返回 WaitReadPending 现在把 EINTR 视为暂无数据,并说明在 HUP、ERR 或 NVAL 且无可读字节时返回负值。RunRedirect 的 RedirectOutput 遇到该负值立即退出,POSIX 回归用例覆盖输出、shell 命令与退出码。 修复 mormot.core.os+1 f2b61cbc+43-2

core: RunRedirect() on POSIX returns again as soon as the child exits

影响

POSIX 后端启动短时命令后,不再在子进程退出后继续等待 waitfordelayms 到期。中断 poll 的信号会由外层循环重试,而不会被误判为管道关闭。

zen010101 · 10:21 UTC · 在 GitHub 上查看该提交 →

3 中 WinHTTP 执行重定向次数限制并阻止 HTTPS 降级 TWinHttp.InternalSendRequest 在 RedirectMax 为零时将 WINHTTP_OPTION_REDIRECT_POLICY 设为 NEVER,否则设为 DISALLOW_HTTPS_TO_HTTP;同时把 RedirectMax 传给 WINHTTP_OPTION_MAX_HTTP_AUTOMATIC_REDIRECTS,并在设置失败时抛出错误。 修复 mormot.net.client e37c4af5+16-9

net: honor RedirectMax and check redirect policy in TWinHttp

影响

TWinHttp 不再超过配置的重定向次数,并会拒绝 HTTPS 到 HTTP 的降级。依赖此类降级或忽略选项失败的后端可能看到请求错误。

值得一看

复测存在重定向的 TWinHttp 调用,尤其是接近 RedirectMax 的链以及从 HTTPS 跳转到 HTTP 的端点。

Arnaud Bouchez · 11:01 UTC · 在 GitHub 上查看该提交 →

4 中 libcurl 不再超过 RedirectMax 允许的重定向次数 TCurlHttp.InternalCreateRequest 仍根据 RedirectMax 切换 coFollowLocation,同时把 libcurl 的 coMaxRedirs 设置为所配置的正值。 修复 mormot.net.client 5297eabb+6-3

net: honor RedirectMax in TCurlHttp

影响

TCurlHttp 现在会在框架配置的上限停止重定向链,而不是采用 libcurl 默认上限,使不同 HTTP 客户端后端行为一致。

值得一看

若 RedirectMax 与 libcurl 默认上限不同,请复测包含大量重定向的 TCurlHttp 请求。

Arnaud Bouchez · 10:49 UTC · 在 GitHub 上查看该提交 →

5 中 WinHTTP 在受支持的 Windows 版本上启用 TLS 1.3 WindowsSpecs 为 Windows 11 与 Windows Server 2022 或更高版本新增 wsTls13。存在该能力时,TWinHttp.InternalGetProtocols 会加入 WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_3,SChannel 也复用同一检测。 新功能 mormot.core.os+3 fe064e35+16-13

net: TWinHttp enable TLS 1.3 on Windows 11 or Server 2022

影响

受支持 Windows 系统上的 TWinHttp 连接可在无需修改应用的情况下协商 TLS 1.3;旧版 Windows 保持现有 TLS 协议集合。

值得一看

若生产环境限制传输协议版本,请在 Windows 11 或 Server 2022 上验证 TLS 协商与代理兼容性。

公开 API

  • TWindowsSpec.wsTls13added — 表示 Windows 11 与 Windows Server 2022 或更高版本具备官方 TLS 1.3 支持。

Arnaud Bouchez · 10:58 UTC · 在 GitHub 上查看该提交 →

6 低 WinHTTP 重定向设置得到整理,并移除已合并的回归测试 TWinHttp.InternalSendRequest 将 aData 长度赋值移到 RedirectMax 选项调用后的独立语句。通过合并贡献加入的临时 RunRedirect 回归测试从 test.core.base 中移除。 内部重构 mormot.net.client e84e07fc+5-37

net: some refactoring after previous commits

影响

公共 API 与预期运行行为不变。WinHTTP 代码更清晰,但短期存在的 POSIX 回归覆盖已从测试套件移除。

Arnaud Bouchez · 14:17 UTC · 在 GitHub 上查看该提交 →

7 低 项目文档更新贡献者与编译器覆盖范围 CONTRIBUTORS.md 增加近期贡献者。README.md 将固定的最新 Delphi 版本改为持续跟进最新修订,加入 Delphi 13.2 验证,并说明 LLVM 编译器仍属初步支持。 文档 d17dfbfe+22-7

doc: refined main markdown files - especially the latest contributors! Thanks guys!

影响

应用与运行时行为不变。文档中的验证矩阵现包含 Delphi 13.2,并更准确描述 Delphi 跨平台支持状态。

Arnaud Bouchez · 14:31 UTC · 在 GitHub 上查看该提交 →

上游活动 每日提交数 · 最近 60 天
提交977
活跃天数44/60
最忙一天2026-09-30
峰值60
2026-08-15: 0 commits2026-08-16: 0 commits2026-08-17: 0 commits2026-08-18: 0 commits2026-08-19: 0 commits2026-08-20: 0 commits2026-08-21: 0 commits2026-08-22: 0 commits2026-08-23: 0 commits2026-08-24: 0 commits2026-08-25: 0 commits2026-08-26: 0 commits2026-08-27: 26 commits2026-08-28: 11 commits2026-08-29: 10 commits2026-08-30: 1 commit2026-08-31: 23 commits2026-09-01: 0 commits2026-09-02: 20 commits2026-09-03: 29 commits2026-09-04: 35 commits2026-09-05: 13 commits2026-09-06: 0 commits2026-09-07: 0 commits2026-09-08: 23 commits2026-09-09: 10 commits2026-09-10: 17 commits2026-09-11: 23 commits2026-09-12: 14 commits2026-09-13: 9 commits2026-09-14: 7 commits2026-09-15: 4 commits2026-09-16: 24 commits2026-09-17: 26 commits2026-09-18: 21 commits2026-09-19: 59 commits2026-09-20: 13 commits2026-09-21: 5 commits2026-09-22: 34 commits2026-09-23: 17 commits2026-09-24: 57 commits2026-09-25: 22 commits2026-09-26: 26 commits2026-09-27: 0 commits2026-09-28: 2 commits2026-09-29: 19 commits2026-09-30: 60 commits2026-10-01: 26 commits2026-10-02: 30 commits2026-10-03: 32 commits2026-10-04: 15 commits2026-10-05: 1 commit2026-10-06: 26 commits2026-10-07: 37 commits2026-10-08: 27 commits2026-10-09: 35 commits2026-10-10: 33 commits2026-10-11: 9 commits2026-10-12: 11 commits2026-10-13: 35 commits
2026-08-152026-10-13