Требует действийможет затронуть работающую системуПроверены все 26 non-merge commits от 2.4.17162 до 2.4.17187: 989 additions и 286 deletions без version bookkeeping. superseded_by отсутствует; avoid windows основаны на проверенных fixes тех же routines. Нерешённых дефектов final head не найдено.
URI redirects стабилизированы, heartbeat и sessions восстановлены
URI stack переписан по RFC 3986 с разрешением relative Location и стабилизирован к build 2.4.17187 до применения в HTTP redirects. Production получает successor fix отключённых async WebSocket heartbeats, корректные Signed URI и REST session timeouts, безопасный startup/shutdown proxy cache и опциональную direct IOCP write на Windows. Внешние вызовы ESynSspi.RaiseLastOSError требуют миграции.
Коротко
- Переходите на head 215c7bbd240419735ad7e89f5d35ddc9cfeb8b4d, build 2.4.17187, с завершённой URI/redirect серией.
- Build 2.4.17171 восстанавливает async WebSocket heartbeat callbacks, отключённые прежним idle-loop сравнением.
- Порядок Signed URI timestamps и REST session timeout исправлены для долгих процессов и 32-bit rollover.
- Windows proxy cache получил direct IOCP writes и защиту от startup/background-deletion races.
- Замените внешние вызовы ESynSspi.RaiseLastOSError на ESynSspi.RaiseSspiError.
- Избегайте 2.4.17162–2.4.17170 для heartbeat и 2.4.17176–2.4.17186 для незавершённой URI серии.
Рекомендации по обновлению
Обновляйтесь до build 2.4.17187 в head 215c7bbd240419735ad7e89f5d35ddc9cfeb8b4d, не останавливаясь внутри URI rewrite. Приоритет для WebSocket, Signed URI, REST session, SOA и proxy cache. Замените ESynSspi.RaiseLastOSError на ESynSspi.RaiseSspiError и проверьте relative redirects, credentials и Windows proxy throughput.
26 из 26 записей · 26 коммитов в апстриме
1
Высокий
Signed URI sessions корректно переживают tick rollover
RetrieveSession сравнивает timestamps signed modular delta, обновляет last только для более нового и выравнивает startup/32-bit rollover.
Безопасность
mormot.rest.server
1c193929+31-25
rest: fixed TRestServerAuthenticationSignedUri.RetrieveSession parsing
Влияние
Long-running Signed URI services больше не отвергают valid timestamps около startup или tick wrap.
Рекомендуется обновиться
Приоритетно обновите Signed URI authentication и проверьте replay windows через rollover.
Модули
2
Высокий
HTTP redirects разрешают Location через TUri
THttpClientSocket заменяет ручной parsing на TUri.FromLocation, позволяет OnRedirect менять Location/options и принимает reconnect/credential/reject решения по parsed URI.
Исправления
mormot.net.client
150674b6+69-66
net: fixed THttpClientSocket 3xx redirection Location: parsing
Влияние
Relative, absolute и scheme-relative redirects единообразны, но initial integration требует следующего cross-origin fix.
Рекомендуется обновиться
Берите только полной серией до 2.4.17187 и тестируйте redirect callbacks.
Публичный API
THttpClientSocket redirect Location handlingbehaviour-changed — Использует RFC 3986-aware TUri.FromLocation.
Модули
3
Высокий
Initial URI parser defects исправлены
TUri.From/FromLocation исправляют string length, отвергают пустой explicit port, чинят types/bounds и relative-resolution output.
Исправления
mormot.net.sock
50b2e69c+25-37
net: fixed TUri.From/FromLocation methods
Влияние
Не используйте initial parser builds: malformed ports и некоторые lengths обрабатывались неверно.
Рекомендуется обновиться
Берите этот и все последующие URI fixes до 2.4.17187.
Модули
4
Высокий
TUri.FromScheme согласует text и enum scheme
TUri.FromScheme теперь задаёт Scheme из TUriScheme вместе с UriScheme; добавлены tests HTTP, HTTPS, WS, WSS, FTP и LDAPS.
Исправления
mormot.net.sock
215c7bbd+14-11
net: fixed TUri.FromScheme
Влияние
URI, SameUri и Https после FromScheme получают верный scheme; 2.4.17186 мог создавать несогласованный TUri.
Рекомендуется обновиться
Переходите на 2.4.17187 и тестируйте FromScheme с чтением Scheme, URI или Https.
Публичный API
TUri.FromSchemebehaviour-changed — Теперь инициализирует UriScheme и Scheme.
Модули
5
Высокий
Redirect origin checks и retry state стабилизированы
THttpClientSocket считает cross-origin после parsing Location, удаляет RedirectCrossOrigin, восстанавливает HTTP state при reopen failure; FromScheme задаёт UriScheme.
Исправления
mormot.net.client+1
eb38a32d+10-7
net: one last set of fixes before the week-end
Влияние
Redirect credential policy использует реальную цель, а failed reconnect не оставляет client state частично изменённым.
Рекомендуется обновиться
Не оставайтесь на 2.4.17183; берите этот fix и final FromScheme fix.
6
Высокий
SOA discovery учитывает активные publication timeouts
TServicesPublishedInterfacesList исправляет expired/live comparisons, сохраняя valid interfaces и обновляя expiring entries.
Исправления
mormot.soa.core
712db4b8+9-8
soa: fixed TServicesPublishedInterfacesList timeout logic
Влияние
Service discovery с nonzero timeout больше не скрывает live services и не пропускает refresh.
Рекомендуется обновиться
Приоритетно обновите SOA registries с expiring publications и проверьте renewal.
Модули
7
Высокий
Proxy-cache startup больше не race с idle worker
THttpProxyServer добавляет fUrlSet readiness flag; OnIdle выходит до завершения URL initialization, устраняя random GPF.
Исправления
mormot.net.async
7060c16c+8-3
net: fixed random GPF at THttpProxyServer startup
Влияние
Production proxy cache избегает initialization race, способной crash процесс до завершения Start.
Рекомендуется обновиться
Обновите proxy-cache deployments вместе со следующим shutdown/deletion guard.
Модули
8
Высокий
Proxy-cache deletion безопасно прерывается при shutdown
THttpProxyServer очищает fUrlSet при Stop/IP change и проверяет его во время slow directory deletion.
Исправления
mormot.net.async
98ab0d20+6-3
net: hardened Proxy Cache background deletion even more
Влияние
Proxy-cache shutdown/reconfiguration избегают background access к stale URL state, снижая crash/race risk.
Рекомендуется обновиться
Берите вместе со startup guard и stress-test Stop/SetRemoteIP во время удаления cache.
Модули
9
Высокий
Async WebSocket heartbeats снова работают
IdleEverySecond сравнивает текущую секунду с allowed callback time вместо ошибочного сравнения allowed с GC cutoff.
Исправления
mormot.net.async
505684ce+4-4
net: fixed regression in TWebSocketAsyncConnections heartbeats
Влияние
Heartbeat callbacks больше не останавливаются после memory threshold, восстанавливая liveness и stale-peer detection.
Рекомендуется обновиться
Сразу обновите async WebSocket servers и после проверки уберите workaround LastOperationReleaseMemorySeconds=0.
Модули
10
Высокий
TUri parsing переписан на bounded buffers
TUri.From переписан через новый public FromBuffer для scheme, user info, IPv6 authority, port, path, query и fragment.
Внутреннее устройство
mormot.net.sock
4dd65061+152-92
net: rewritte TUri.From() method
Влияние
URI parsing существенно меняется и получает allocation-free entry point; initial implementation требует последующих fixes.
Рекомендуется обновиться
Не cherry-pick отдельно; берите всю серию до 2.4.17187.
Публичный API
TUri.FromBufferadded — Парсит bounded URI buffer с optional default port.TUri.Frombehaviour-changed — Теперь использует новый bounded RFC-oriented parser.
Модули
11
Средний
SSPI exceptions сообщают полученный SSPI error
ESynSspi.RaiseLastOSError переименован в RaiseSspiError и использует переданный SSPI status вместо unrelated GetLastError; internal Check стал CheckOK.
Несовместимые изменения
mormot.lib.sspi+1
60ef8977+31-32
lib: fixed SSPI exception message
Влияние
Windows auth/TLS diagnostics становятся точными; external calls старого public helper не компилируются.
Требуется миграция
Найдите ESynSspi.RaiseLastOSError и замените на ESynSspi.RaiseSspiError.
Публичный API
ESynSspi.RaiseLastOSErrorrenamed — Переименован в RaiseSspiError и сообщает supplied SSPI status.
12
Средний
URI validation учитывает края RFC 3986
TUri parsing запрещает colon в первом relative segment, ужесточает authority/port/Location validation и расширяет tests.
Исправления
mormot.net.sock
96f4f5cf+69-57
net: follow RFC 3986 for URI parsing
Влияние
Malformed redirect targets отвергаются, valid RFC 3986 relative references поддерживаются в Delphi/FPC.
Рекомендуется обновиться
Включите в полную URI серию и проверьте nonstandard Location ваших services.
Публичный API
TUri.From and TUri.FromLocationbehaviour-changed — Malformed RFC 3986 references отвергаются строже.
Модули
13
Средний
Async connection GC учитывает tick rollover
TAsyncConnections.OneGC использует unsigned elapsed subtraction и clamp future values для 32-bit tick wrap.
Исправления
mormot.net.async
b67f5df7+12-10
net: fixed TAsyncConnections GC timing logic
Влияние
Long-running async Delphi/FPC servers больше не ошибаются с connection GC около timer rollover.
Рекомендуется обновиться
Обновите long-running async servers и проверьте idle connection cleanup.
Модули
14
Средний
HTTP proxy keep-alive использует специальный header
THttpClientSocket отправляет Proxy-Connection: Keep-Alive для proxy traffic, сохраняя Connection для direct requests и close.
Исправления
mormot.net.client
6c5201e6+8-6
net: try to fix THttpClientSocket over SQUID Proxy
Влияние
Connections через SQUID-style proxy реже закрываются или обрабатываются неверно благодаря явному header.
Рекомендуется обновиться
Обновите affected proxy clients и проверьте persistent HEAD/GET.
Модули
15
Средний
Weekly HTTP rotation срабатывает вовремя
THttpRotater исправляет comparison: rotation выполняется при достижении NextTix32, а не до deadline.
Исправления
mormot.net.http
1fc47dc2+4-3
net: fixed regression in THttpRotater logic
Влияние
Backends с weekly HTTP log/file rotation возвращаются к правильному schedule.
Рекомендуется обновиться
Обновите services с THttpRotater и проверьте следующую rotation.
Модули
16
Средний
TSynCache сбрасывается только после deadline
TSynCache.ResetIfNeeded требует nonzero fTimeoutTix и сбрасывает при достижении deadline вместо обратной проверки.
Исправления
mormot.core.search
f975f6ac+4-3
core: fixed TSynCache.ResetIfNeeded logic
Влияние
Caches больше не очищаются до expiry и истекают в настроенный момент на Delphi/FPC.
Рекомендуется обновиться
Обновите timed TSynCache и повторите tests retention/expiry.
Модули
17
Средний
REST session expiry больше не теряет точность
TAuthSession умножает SessionTimeout на MilliSecsPerMin до shift вместо раннего усечения минутного коэффициента.
Исправления
mormot.rest.server
75a6ffd2+3-3
rest: fixed TAuthSession timeout computation
Влияние
Delphi/FPC servers больше не завершают idle sessions немного раньше; 60 минут теряли около 36 секунд.
Рекомендуется обновиться
Обновите REST servers с точными границами SessionTimeout и повторите expiry tests.
Модули
18
Средний
TUri разрешает HTTP Location без allocation
Public TUri.FromLocation разрешает absolute, scheme-relative, root-relative и path-relative Location по server, port и TLS context.
Новые возможности
mormot.net.sock
1d79356f+264-2
net: new TUri.FromLocation() method
Влияние
Delphi/FPC HTTP code может заменить ad hoc parsing одним allocation-free parser, но нужны follow-up fixes.
Стоит взглянуть
Применяйте только в 2.4.17187 и тестируйте relative Location ваших servers.
Публичный API
TUri.FromLocationadded — Публичный resolver Location по RFC 3986.
Модули
19
Средний
Redirect может принудительно открыть новое HTTP connection
THttpRedirectOption получил hroForceReconnect: THttpClientSocket переоткрывает socket при каждом redirect, включая same-origin.
Новые возможности
mormot.net.client
49fa877c+10-6
net: new hroForceReconnect option for THttpClientSocket
Влияние
Clients за SQUID/E2Guardian избегают stale/misrouted reused connections; empty default сохраняет behavior.
Стоит взглянуть
Включайте hroForceReconnect только для affected proxy paths и измерьте connection cost.
Публичный API
THttpRedirectOption.hroForceReconnectadded — Принудительно пересоздаёт socket при redirect.
Модули
20
Средний
Async sockets могут обрабатывать IOCP writes напрямую
TAsyncConnectionsOptions получил acoIocpWriteDirect; Windows write path может вызвать ProcessWrite напрямую до fallback queue.
Производительность
mormot.net.async
7966b5fb+29-14
net: new hsoIocpWriteDirect HTTP server option for IOCP
Влияние
Opt-in Windows async servers снижают dispatch overhead; Delphi/FPC POSIX paths не меняются.
Стоит взглянуть
Включайте через server option и stress-test concurrent large responses на Windows.
Публичный API
TAsyncConnectionsOptions.acoIocpWriteDirectadded — Запрашивает direct Windows IOCP write processing.TPollAsyncSockets.ProcessWritesignature-changed — Добавлен defaulted direct-processing parameter на Windows.
Модули
21
Средний
Windows proxy cache включает direct IOCP writes
Public hsoIocpWriteDirect мапит acoIocpWriteDirect; THttpProxyServer включает его по умолчанию для Windows IOCP.
Производительность
mormot.net.async+1
217c0a6b+15-11
net: enhanced Proxy Cache scaling on Windows
Влияние
Windows proxy-cache получает меньше write-queue contention; non-Windows и servers без option не меняются.
Стоит взглянуть
Сравните benchmark throughput/latency Windows proxy cache.
Публичный API
THttpServerOption.hsoIocpWriteDirectadded — Включает direct IOCP write processing.
22
Низкий
Tests адаптированы к translation layers и старому curl
RSA timeout ослаблен под Windows PRISM, symbol discovery пропускает SynLogVectoredHandler, TFTP tests gated для проблемных curl versions.
Компилятор и платформы
mormot.core.log+2
6250c714+47-36
test: try to adapt to some LUTI conditions
Влияние
CI и emulated Windows получают меньше false failures; application behavior меняется только longer RSA timeout под PRISM.
23
Низкий
URI и Location parsing получили широкие regression tests
Network tests добавляют множество valid/invalid случаев From/FromLocation: authority, IPv6, ports, query, fragment и relative resolution.
Тесты
a22a5e2e+268-3
test: cover TUri.From/FromLocation methods as much as possible
Влияние
Application code не меняется; tests фиксируют parser contract и выявляют последующие regressions.
24
Низкий
TUri.From coverage расширен после rewrite
Network tests добавляют credentials, IPv6 literals, explicit ports, paths, queries, fragments и malformed input.
Тесты
d4c88e2e+33-2
tests: enhanced TUri.From() coverage
Влияние
Application code не затронут; suite поддерживает последующие parser fixes.
25
Низкий
FromScheme получил целевые protocol tests
Network tests покрывают TUri.FromScheme для HTTP, HTTPS, WS, WSS, FTP, FTPS, LDAP и LDAPS до final fix.
Тесты
5ffe448e+24-2
tests: validate TUri.FromScheme method
Влияние
Application code не меняется; tests выявили defect, исправленный следующим commit.
26
Низкий
TFTP retry expectations уточнены
TFTP server tests корректируют retry и connection-count expectations для дополнительных retransmissions.
Тесты
4ba0e6f5+5-5
tests: refined TFTP server expectations
Влияние
Application code не меняется; tests становятся менее хрупкими при retransmission.