值得一看可能需要的修复或功能已审查 build 2.4.17188 至 2.4.17189 的两个 non-merge commit:除版本 bookkeeping 外新增两行、删除两行。两者均无 superseded_by,upstream head 与 raw payload head 一致。
脚本引擎过期时间保留完整分钟范围
一行算术修复避免较大的 TThreadSafeManager.EngineExpireTimeOutMinutes 在换算为毫秒时溢出。Windows SChannel server 在证书 store 中无法选出证书时,exception 现在也会包含底层系统错误。配置了超长生命周期的脚本引擎 pool 应采用第一项修复;TLS 变更仅改进诊断。
要点
- 采用 upstream head 5a1509b805bcdc7f239c683bd0e68ab9700c1247,即 build 2.4.17189。
- EngineExpireTimeOutMinutes 现在用 Int64 完成分钟到毫秒的乘法,避免较大设置发生 32-bit 溢出。
- SChannel 证书查找失败时,ESChannel 现在包含 Windows 错误文本与代码,不再只有通用消息。
升级建议
如果 EngineExpireTimeOutMinutes 换算后的毫秒数可能超过 32-bit 范围,请升级到 head 5a1509b805bcdc7f239c683bd0e68ab9700c1247 的 build 2.4.17189。无需迁移:public property 仍使用 cardinal 分钟值,仅 setter 算术发生变化。Windows SChannel 部署还可利用更详细的 ESChannel 消息诊断证书 store 故障。
2 条中的 2 条 · 上游 2 次提交
1
中
较长的脚本引擎过期设置不再溢出
mormot.script.core 的 TThreadSafeManager.SetEngineExpireTimeOutMinutes 现在先把 Value 转为 Int64,再乘以 MilliSecsPerMin。结果仍存入现有 Int64 字段 fEngineExpireTimeOutTix。
修复
mormot.script.core
5a1509b8+3-3
script: fixed TThreadSafeManager.EngineExpireTimeOutMinutes
影响
使用较大分钟值的 Delphi/FPC backend 现在会保留预期引擎生命周期,不再存储回绕后的毫秒间隔。240 分钟等常见生产值不变,也无需源码迁移。
建议升级
若 EngineExpireTimeOutMinutes 可能超过约 49.7 天,请升级并确认引擎会在配置边界执行回收。
公开 API
TThreadSafeManager.EngineExpireTimeOutMinutesbehaviour-changed — 较大的 cardinal 分钟值现在使用 64-bit 乘法换算。
2
低
SChannel 证书查找失败会显示 Windows 错误
mormot.net.sock.windows 的 TSChannelNetTls.AfterBind 在 CertFindCertificateInStore 返回 nil 后改用 RaiseLastError,不再调用通用 ESChannel.Create。exception 仍为 ESChannel,并新增操作名、Windows 错误文本与数字代码。
杂项
mormot.net.sock.windows
258c48f4+3-3
net: try to identify SChannel TLS issue on PRISM
影响
Windows Delphi/FPC SChannel server 在找不到可用证书时仍会 bind 失败;只有诊断细节变化。成功的 TLS 设置与非 Windows TLS backend 不受影响。