mORMot2 DailyDaily read of upstream commits

Redirect limits become consistent while POSIX child waits return promptly

HTTP clients now apply RedirectMax consistently in WinHTTP and libcurl, with a stricter WinHTTP downgrade policy and TLS 1.3 enabled on supported Windows releases. POSIX RunRedirect no longer waits for its full polling delay after a child closes stdout. ARM users should also take the follow-up correction to DoubleToAscii normalization.

TL;DR

  • Use build 2.4.17538 to include the complete redirect, TLS and DoubleToAscii follow-ups.
  • TWinHttp and TCurlHttp now enforce RedirectMax instead of treating it only as an on/off switch.
  • RunRedirect on POSIX returns when the child exits rather than waiting for the configured read delay.
  • WinHTTP offers TLS 1.3 on Windows 11 and Windows Server 2022 or newer.

Upgrade advice

Land on build 2.4.17538. Retest redirect limits and HTTPS-to-HTTP redirect rejection in WinHTTP and libcurl, process-launch code using RunRedirect on POSIX, and Double formatting on ARM. Windows 11 and Server 2022 deployments can also verify TLS 1.3 negotiation through TWinHttp.

Build2.4.17531 → 2.4.17538
Commits9
Lines+153 -75
Read2 min

7 of 7 entries · 9 commits upstream

Stories
# Entry Category Units
1 High ARM Double formatting reads the correct normalization word d2a_diy_fp_multiply in mormot.core.text now tests PQWordRec(@result.f)^.h after mul64x64 instead of indexing PQWordArray at element 1. The new access names the high 32-bit word of the 64-bit result directly. Fixes mormot.core.text 415d148c+1-1

core: fixed DoubleToAscii() normalization after mul64x64()

Impact

ARM Delphi and FPC builds avoid using the wrong word when normalizing Grisu state, preventing incorrect DoubleToAscii output introduced by the preceding ARM optimization.

zen010101 · 05:06 UTC · view the commit on GitHub →

2 Medium POSIX RunRedirect returns as soon as the child closes its pipe WaitReadPending now treats EINTR as no data and documents negative results for HUP, ERR or NVAL without readable bytes. RunRedirect's RedirectOutput exits immediately on that negative result, and POSIX regression cases cover output, shell commands and exit codes. Fixes mormot.core.os+1 f2b61cbc+43-2

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

Impact

POSIX backends launching short-lived commands no longer wait until waitfordelayms expires after the child has exited. Signals interrupting poll are retried by the surrounding loop instead of being mistaken for a closed pipe.

zen010101 · 10:21 UTC · view the commit on GitHub →

3 Medium WinHTTP enforces redirect counts and blocks HTTPS downgrades TWinHttp.InternalSendRequest sets WINHTTP_OPTION_REDIRECT_POLICY to NEVER when RedirectMax is zero and to DISALLOW_HTTPS_TO_HTTP otherwise. It also passes RedirectMax to WINHTTP_OPTION_MAX_HTTP_AUTOMATIC_REDIRECTS and raises if either option cannot be applied. Fixes mormot.net.client e37c4af5+16-9

net: honor RedirectMax and check redirect policy in TWinHttp

Impact

TWinHttp no longer follows more redirects than configured and will reject HTTPS-to-HTTP downgrades. Backends that relied on those downgrades or ignored option failures may observe request errors.

Worth a look

Retest TWinHttp callers with redirects, especially chains near RedirectMax and any endpoint that redirects from HTTPS to HTTP.

Arnaud Bouchez · 11:01 UTC · view the commit on GitHub →

4 Medium libcurl follows no more redirects than RedirectMax allows TCurlHttp.InternalCreateRequest still toggles coFollowLocation from RedirectMax, but now also sets libcurl coMaxRedirs to the configured positive value. Fixes mormot.net.client 5297eabb+6-3

net: honor RedirectMax in TCurlHttp

Impact

TCurlHttp now stops redirect chains at the framework setting instead of libcurl's own default maximum, making the option behave consistently across HTTP client backends.

Worth a look

Retest redirect-heavy TCurlHttp requests if RedirectMax differs from libcurl's default limit.

Arnaud Bouchez · 10:49 UTC · view the commit on GitHub →

5 Medium WinHTTP enables TLS 1.3 on supported Windows releases WindowsSpecs gains wsTls13 for Windows 11 and Windows Server 2022 or newer. TWinHttp.InternalGetProtocols adds WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_3 when that capability is present, and SChannel reuses the same capability test. New features mormot.core.os+3 fe064e35+16-13

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

Impact

TWinHttp connections on supported Windows systems may negotiate TLS 1.3 without application changes. Older Windows versions retain the existing TLS protocol set.

Worth a look

Verify TLS negotiation and proxy compatibility on Windows 11 or Server 2022 if transport versions are operationally constrained.

Public API

  • TWindowsSpec.wsTls13added — Reports official TLS 1.3 support on Windows 11 and Windows Server 2022 or newer.

Arnaud Bouchez · 10:58 UTC · view the commit on GitHub →

6 Low WinHTTP redirect setup is tidied and a merged regression test is removed TWinHttp.InternalSendRequest moves the aData length assignment onto its own statement after the RedirectMax option call. The temporary RunRedirect regression method added through the merged contribution is removed from test.core.base. Under the hood mormot.net.client e84e07fc+5-37

net: some refactoring after previous commits

Impact

No public API or intended runtime behavior changes. The WinHTTP code becomes clearer, while the short-lived POSIX regression coverage is no longer present in the test suite.

Arnaud Bouchez · 14:17 UTC · view the commit on GitHub →

7 Low Project documentation refreshes contributors and compiler coverage CONTRIBUTORS.md adds recent contributors. README.md replaces a fixed latest-Delphi claim with ongoing latest-revision wording, lists Delphi 13.2 validation and clarifies preliminary LLVM compiler support. Docs d17dfbfe+22-7

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

Impact

No application or runtime behavior changes. The documented validation matrix now includes Delphi 13.2 and more accurately describes Delphi cross-platform status.

Arnaud Bouchez · 14:31 UTC · view the commit on GitHub →

Upstream activity commits per day · last 60 days
Commits977
Active days44/60
Busiest2026-09-30
Peak60
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