Worth a looka fix or feature you may want
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.
7 of 7 entries · 9 commits upstream
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.
Upgrade recommended
Upgrade ARM builds and rerun floating-point serialization tests, especially values near a Grisu normalization boundary.
Units
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.
Upgrade recommended
Upgrade POSIX services that call RunRedirect with a long waitfordelayms and verify command output plus exit-code handling.
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.
Units
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.
Units
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.
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.
Units
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.