mORMot2 DailyЕжедневный обзор коммитов апстрима

HTTP-автоматы стабилизированы, а закрытие Unix-клиента больше не удаляет сокет сервера

Этот сетевой выпуск завершает крупную переработку HTTP-клиентов и таймаутов, а затем исправляет обнаруженные регрессии конструкторов, proxy, WebSocket и native backends. HTTP framing теперь отделяет семантику ответа HEAD от тела запроса, Windows HTTP.sys принимает chunked uploads и повторные заголовки аутентификации или cookie, а POSIX-клиент при закрытии больше не удаляет Unix-domain socket сервера.

Коротко

  • POSIX Unix-domain clients no longer unlink the server socket path when they close.
  • HTTP.sys now accepts chunked request bodies and preserves repeated Set-Cookie and authentication headers.
  • HEAD and OPTIONS handling now follows message framing; redirected 301 POST and 303 requests also discard their old bodies.
  • THttpRequestExtendedOptions.GetTimeouts is replaced by ComputeTimeouts, THttpRequest.InternalConnect loses its parameters, and TCrtSocket.ReOpen no longer accepts a timeout.
  • TRestHttpClientGeneric connection-definition parsing no longer risks an infinite loop.
  • Land on final build 2.4.17433 rather than an intermediate build from this refactor sequence.

Рекомендации по обновлению

Переходите на финальный build 2.4.17433, а не на промежуточный build этого выпуска: последующие коммиты исправляют конструкторы, setters таймаутов, выбор proxy, разбор REST definitions, тела при redirect и HTTP server state. Обновление особенно важно для POSIX Unix sockets и Windows HTTP.sys. Перед сборкой найдите THttpRequestExtendedOptions.GetTimeouts, параметризованные overrides THttpRequest.InternalConnect и TCrtSocket.ReOpen(timeout).

Сборка2.4.17398 → 2.4.17433
Коммиты37
Строки+693 -650
Чтение7 мин

36 из 36 записей · 37 коммитов в апстриме

Сюжеты
# Запись Категория Модули
1 Критический Reuse HTTP options больше не читает за пределами auth record THttpClientSocket.SameOpenOptions передаёт в THttpRequestExtendedOptions.SameAuth @aOptions вместо @aOptions.Auth, предоставляя ожидаемый base pointer и устраняя wrong memory access. Исправления mormot.net.client b466ee53+3-3

net: fixed wrong memory access in THttpClientSocket.SameOpenOptions

Влияние

Проверки reuse HTTP clients в Delphi/FPC больше не читают чужую память, избегая неверного сравнения auth и возможного access violation.

Модули

Arnaud Bouchez · 13:20 UTC · открыть коммит на GitHub →

2 Высокий Хранение socket timeouts упрощено, а ReOpen лишился параметра TCrtSocket заменяет fallback-поля конкретными connect/send/receive значениями, отслеживает применённые SO_*TIMEO, копирует настройки через SetTimeoutsFrom и меняет ReOpen(aTimeout) на ReOpen без параметров со stored values. Несовместимые изменения mormot.net.sock 7f8a625b+114-155

net: rewritten TCrtSocket timeouts implementation

Влияние

Вызовы ReOpen с таймаутом больше не компилируются. Приложения Delphi/FPC должны задать ConnectTimeout, SendTimeout и ReceiveTimeout до ReOpen; запись TimeOut теперь устанавливает все три.

Требуется миграция

Замените ReOpen(timeout) на присваивание timeout properties и вызов ReOpen, затем проверьте accepted sockets и proxy/TLS reconnects.

Публичный API

  • TCrtSocket.ReOpensignature-changed — Параметр timeout удалён; используются сохранённые фазовые таймауты.
  • TCrtSocket.SetTimeoutsFromadded
  • TCrtSocket.TimeOutbehaviour-changed — Запись теперь устанавливает все три фазовых таймаута.

Модули

Arnaud Bouchez · 10:32 UTC · открыть коммит на GitHub →

3 Высокий Расширенные HTTP options теперь вычисляют конкретные таймауты THttpRequestExtendedOptions.GetTimeouts удалён, а ComputeTimeouts записывает отсутствующие фазовые значения из HTTP defaults или CreateTimeoutMS. THttpClientSocket копирует их в TCrtSocket, а reuse соединения больше не сравнивает таймауты. Несовместимые изменения mormot.net.client 3d81851d+42-45

net: fixed THttpClientSocket timeouts usage

Влияние

Прямые вызовы GetTimeouts перестают компилироваться в Delphi и FPC и должны перейти на mutating-метод ComputeTimeouts. Изменение только таймаутов больше не вызывает reconnect HTTP socket.

Требуется миграция

Замените GetTimeouts на ComputeTimeouts, затем читайте ConnectTimeoutMS, SendTimeoutMS и ReceiveTimeoutMS из record.

Публичный API

  • THttpRequestExtendedOptions.GetTimeoutsremoved
  • THttpRequestExtendedOptions.ComputeTimeoutsadded

Модули

Arnaud Bouchez · 10:28 UTC · открыть коммит на GitHub →

4 Высокий HTTP backend overrides теперь читают options из экземпляра THttpRequest.InternalConnect теряет три параметра timeout; overrides WinHTTP, WinINet, Curl и Delphi NetHTTP читают fExtendedOptions. Конструктор инициализирует URI и options до вызова virtual-метода без параметров. Несовместимые изменения mormot.net.client edbd697a+39-43

net: rewritten THttpRequest.InternalConnect method

Влияние

Пользовательские потомки THttpRequest с override InternalConnect не соберутся в Delphi/FPC, пока не обновят сигнатуру и чтение таймаутов.

Требуется миграция

Измените overrides на procedure InternalConnect; и читайте fExtendedOptions.ConnectTimeoutMS, SendTimeoutMS и ReceiveTimeoutMS.

Публичный API

  • THttpRequest.InternalConnectsignature-changed

Модули

Arnaud Bouchez · 11:03 UTC · открыть коммит на GitHub →

5 Высокий Redirects и 100-Continue теперь корректно обрабатывают тело THttpClientSocket очищает Data, DataMimeType и InStream, когда 301 POST или подходящий 303 превращается в GET, формирует headers для входного stream, а сервер отправляет 100 Continue только при Content-Length или chunked framing. Исправления mormot.net.async+2 bdb952f3+27-23

net: some client/server HTTP state machine fixes

Влияние

Redirected запросы Delphi/FPC больше не отправляют старые entity data с переписанным GET, а сервер не приглашает клиента передавать тело без framing.

Arnaud Bouchez · 19:41 UTC · открыть коммит на GitHub →

6 Высокий Разбор REST connection definition больше не зацикливается TRestHttpClientGeneric.RegisteredClassCreateFrom заменяет цепочку UrlDecode на UrlDecodeNextNameValue, продвигаясь для каждой пары name/value перед обработкой известных options. Исправления mormot.crypt.secure+1 9292c506+27-20

rest: fixed TRestHttpClientGeneric.RegisteredClassCreateFrom

Влияние

Клиенты Delphi и FPC из TSynConnectionDefinition больше не зависают, если DatabaseName содержит options, мимо которых старая цепочка не продвигалась.

Arnaud Bouchez · 12:52 UTC · открыть коммит на GitHub →

7 Высокий OPTIONS может содержать данные; только HEAD подавляет response body HTTP client/server code заменяет HttpMethodWithNoBody на IsHead для response bodies и checks framing для request bodies. Curl больше не включает CURLOPT_NOBODY для OPTIONS. Исправления mormot.net.acme+3 f119fd8c+18-19

net: only HEAD has no body - OPTIONS could

Влияние

Серверы Delphi/FPC теперь читают framed bodies OPTIONS, а клиенты получают response content. Приложения, считавшие OPTIONS bodyless, могут увидеть новые данные.

Arnaud Bouchez · 15:11 UTC · открыть коммит на GitHub →

8 Высокий Curl request options корректно сбрасываются и восстанавливают TLS verification TCurlHttp всегда задаёт coFollowLocation по RedirectMax и явно восстанавливает coSSLVerifyPeer/coSSLVerifyHost, если certificate errors не игнорируются, затем применяет client certificate или custom CA. Исправления mormot.net.client cf40c09d+19-15

net: several fixes to TCurlHttp options usage

Влияние

Повторно используемые Curl handles больше не сохраняют redirect или ослабленный TLS state предыдущего запроса. POSIX Delphi/FPC Curl clients снова выполняют configured verification.

Модули

Arnaud Bouchez · 14:14 UTC · открыть коммит на GitHub →

9 Высокий Массовое обновление таймаутов теперь вызывает setters подклассов TCrtSocket.SetTimeouts восстановлен как public helper: задаёт ConnectTimeout и вызывает virtual SetSendTimeout/SetReceiveTimeout. SetTimeoutsFrom и DoCreate используют этот путь, чтобы выполнялись WebSocket overrides. Исправления mormot.net.client+1 93002192+18-16

net: fixed TCrtSocket virtual timeout setters call

Влияние

THttpClientWebSockets теперь синхронизирует CallbackAnswerTimeOutMS при назначении через base helpers. Setter hooks подклассов Delphi/FPC снова вызываются.

Arnaud Bouchez · 13:36 UTC · открыть коммит на GitHub →

10 Высокий HTTP servers читают любое framed request body, включая HEAD Sync и async server paths запускают streaming и DownloadBody по Content-Length или Transfer-Encoding вместо исключения HEAD. Async 100-Continue ограничен состояниями ожидания тела. Исправления mormot.net.async+1 0e0af8c7+14-19

net: fixed body retrieval on HTTP servers logic

Влияние

Байты framed request последовательно потребляются, предотвращая рассинхронизацию протокола на keep-alive даже для HEAD. Исправление полезно Delphi и FPC server backends.

Arnaud Bouchez · 19:24 UTC · открыть коммит на GitHub →

11 Высокий Закрытие Unix-domain клиента больше не удаляет сокет сервера TCrtSocket.Close теперь вызывает fpunlink для nlUnix только при fWasBind. Тест подключает клиента к bound path и проверяет, что файл удаляется лишь при освобождении сервера. Исправления mormot.net.sock+1 5b58dd54+19-2

net: TCrtSocket.Close only deletes a unix socket file it bound itself

Влияние

На POSIX Delphi и FPC отключение клиента больше не делает живой Unix-domain server недоступным для новых клиентов из-за удаления filesystem entry.

Публичный API

  • TCrtSocket.Closebehaviour-changed

Antoine Gaudreau Simard · 18:32 UTC · открыть коммит на GitHub →

12 Высокий WinINet применяет таймауты к session handle TWinINet.InternalConnect вызывает InternetSetOption для fSession вместо ещё не созданного fConnection и явно сообщает ошибку настройки connect/send/receive timeout. Исправления mormot.net.client 94043c0a+11-8

net: fixed TWinINet.InternalConnect timeouts setting

Влияние

Windows WinINet clients теперь реально получают phase timeouts вместо тихого вызова API с nil handle. Ошибка настройки видна Delphi callers.

Модули

Arnaud Bouchez · 13:40 UTC · открыть коммит на GitHub →

13 Высокий HTTP construction вызывает backend после полной инициализации THttpRequest.DoInternalConnect задаёт fHttps до выбора default port и восстанавливает пропущенный вызов InternalConnect после вычисления options. Исправления mormot.net.client 9482ca12+4-3

net: fixed previous THttpRequest commit

Влияние

HTTPS снова использует порт 443 по умолчанию, а native HTTP backends действительно открывают sessions. Исправлен предыдущий refactor для Delphi/FPC.

Модули

Arnaud Bouchez · 13:14 UTC · открыть коммит на GitHub →

14 Высокий HTTP.sys servers теперь принимают chunked request bodies THttpApiServer.DoExecute теперь различает известный Content-Length и transfer-encoded input, читает chunked данные через повторно используемый buffer 128 КБ, контролирует MaximumAllowedContentLength и учитывает фактически полученные bytes. Новые возможности mormot.lib.winhttp+1 7baf2887+77-54

net: let http.sys server support chunked input body

Влияние

Windows HTTP.sys backends принимают HTTP/1.1 chunked uploads вместо отказа или обрезания. Слишком большие тела неизвестной длины получают 413, ошибки приёма — 406.

Arnaud Bouchez · 17:38 UTC · открыть коммит на GitHub →

15 Высокий HTTP constructors используют общий initialization path для backends THttpRequest добавляет DoInternalConnect для URI fields, user agent и таймаутов до backend virtual call; Curl берёт большее send/receive для global transfer timeout, Delphi NetHTTP читает consolidated proxy option. Внутреннее устройство mormot.net.client 70951dd7+28-29

net: several fixes to THttpRequest.Create

Влияние

Все native backends следуют общей последовательности, но этот intermediate refactor потребовал следующего коммита для backend call и HTTPS port.

Стоит взглянуть

Модули

Arnaud Bouchez · 13:10 UTC · открыть коммит на GitHub →

16 Средний Socket receive применяет таймаут к каждой попытке TCrtSocket.TrySockRecv вычисляет deadline для каждого Recv, принудительно ставит zero wait при SockInPending и ограничивает remaining value перед select/poll. Исправления mormot.net.sock 0f8d2fcd+15-13

net: rewritten TCrtSocket.TrySockRecv timeout logic

Влияние

Receive waits в Delphi/FPC соблюдают ReceiveTimeout на low-level attempt, а pending-buffer probes остаются non-blocking.

Стоит взглянуть

Модули

Arnaud Bouchez · 10:34 UTC · открыть коммит на GitHub →

17 Средний HTTP redirects сохраняют методы кроме определённых преобразований в GET TAcmeLetsEncryptServer использует 301 для GET/HEAD и 308 иначе. THttpClientSocket преобразует только POST при 301 и все методы кроме HEAD при 303; явно заданное тело HEAD больше не отбрасывается. Исправления mormot.net.acme+2 8a6da8b7+14-12

net: other HTTP HEAD support related fixes

Влияние

Клиенты Delphi/FPC сохраняют PUT, DELETE и другие методы при 301 и следуют 303; ACME redirect на HTTPS сохраняет non-GET методы через 308.

Стоит взглянуть

Arnaud Bouchez · 19:30 UTC · открыть коммит на GitHub →

18 Средний Socket sends используют monotonic deadline на попытку TCrtSocket.TrySndLow вычисляет end tick через GetTickCount64 для каждой Send-попытки и передаёт остаток fSendTimeout в WaitFor вместо legacy TimeOut. Исправления mormot.net.sock b05f8522+12-8

net: rewritten TCrtSocket.TrySndLow timeout/wait logic

Влияние

Blocked sends в Delphi/FPC точнее соблюдают send timeout и не начинают полный wait заново после времени, уже потраченного в Send.

Стоит взглянуть

Модули

Arnaud Bouchez · 10:34 UTC · открыть коммит на GitHub →

19 Средний Pending buffered reads подавляют wait без изменения socket timeouts TCrtSocket добавляет internal flag fSockInPending вокруг InputSock; SockInRead и TrySockRecv используют его для подавления retry waits без изменения SO_RCVTIMEO и fReceiveTimeout. Исправления mormot.net.sock 057aff56+7-9

net: fixed TCrtSocket.SockInPending from InputSock()

Влияние

SockInPending остаётся non-blocking без временного изменения logical receive timeout, повышая consistency buffered sockets Delphi/FPC.

Стоит взглянуть

Модули

Arnaud Bouchez · 10:33 UTC · открыть коммит на GitHub →

20 Средний WebSocket setup перенесён в общий socket initialization hook THttpClientWebSockets заменяет override конструктора на DoCreate, вызывает inherited DoCreate, инициализирует settings и берёт CallbackAnswerTimeOutMS из fReceiveTimeout. Исправления mormot.net.ws.client 7ceaa39c+6-8

net: fixed THttpClientWebSockets constructor

Влияние

Каждый inherited constructor теперь один раз инициализирует WebSocket settings через virtual hook в Delphi/FPC, без пропуска или дублирования.

Стоит взглянуть

Arnaud Bouchez · 12:56 UTC · открыть коммит на GitHub →

21 Средний Curl может явно отключать унаследованные proxy settings При THttpRequestExtendedOptions.Proxy='none' TCurlHttp передаёт в CURLOPT_PROXY non-nil empty string; пустая option оставляет environment defaults Curl, реальное значение выбирает proxy. Исправления mormot.net.client 68b62f05+8-5

net: fixed TCurlHttp proper 'none' proxy support

Влияние

POSIX Curl requests надёжно обходят HTTP_PROXY и связанные environment settings. Delphi/FPC callers продолжают использовать документированное значение 'none'.

Стоит взглянуть

Модули

Arnaud Bouchez · 13:54 UTC · открыть коммит на GitHub →

22 Средний WinINet открывает user-agent и proxy values в Unicode TWinINet.InternalConnect преобразует user agent, proxy и bypass list из RawUtf8 в SynUnicode и вызывает InternetOpenW вместо InternetOpenA. Исправления mormot.net.client 3851e090+8-5

net: fixed TWinINet Unicode options support

Влияние

Windows Delphi clients сохраняют non-ASCII user-agent и proxy config вместо active ANSI code page. FPC non-Windows paths не затронуты.

Стоит взглянуть

Модули

Arnaud Bouchez · 10:35 UTC · открыть коммит на GitHub →

23 Средний Windows basic Kerberos authentication использует полный server context TBasicAuthServerKerberos ограничивает single-pass shortcut onlypass системой POSIX GSSAPI; Windows теперь идёт через ServerSspiAuth context, нужный SSPI и optional group SID checks. Исправления mormot.net.ldap+1 8fc28980+7-6

net: fixed TBasicAuthServerKerberos on Windows

Влияние

Windows Delphi servers больше не используют GSSAPI-only shortcut при basic Kerberos password validation. POSIX FPC behavior сохранён.

Arnaud Bouchez · 10:25 UTC · открыть коммит на GitHub →

24 Средний Выбор system proxy теперь проверяет host назначения GetSystemProxyUri использует TUri.Server вместо Address при исключении empty, loopback и plain IPv4 destinations из proxy. Исправления mormot.net.client+1 d8e97dc6+5-6

net: fixed GetSystemProxyUri()

Влияние

HTTP clients больше не выбирают proxy по URL path. Localhost и configured direct-IPv4 traffic должны обходить proxy в Delphi и FPC.

Arnaud Bouchez · 13:47 UTC · открыть коммит на GitHub →

25 Средний ACME GET redirects используют 301 вместо 308 TAcmeLetsEncryptServer.Redirect направляет GET вместе с HEAD в ветку 301 Moved Permanently, оставляя 308 с сохранением метода для остальных. Исправления mormot.net.acme 9cd6ccba+5-4

net: fixed GET redirection on TAcmeLetsEncryptServer

Влияние

Обычный GET traffic браузеров и ACME получает conventional permanent redirect. Изменения application code Delphi/FPC не нужны.

Модули

Arnaud Bouchez · 19:17 UTC · открыть коммит на GitHub →

26 Средний HTTP.sys сохраняет повторные authentication challenges раздельно HTTP_RESPONSE.AddCustomHeader обрабатывает WWW-Authenticate и Proxy-Authenticate как Set-Cookie и Connection, отправляя каждое значение через unknown headers вместо одного known-header slot. Исправления mormot.lib.winhttp 37898a45+6-3

net: http.sys respWwwAuthenticate + respProxyAuthenticate multiple headers

Влияние

Windows HTTP.sys responses могут объявлять несколько authentication schemes без потери последующих значений. Изменения Delphi/FPC callers не нужны.

Стоит взглянуть

Модули

Arnaud Bouchez · 15:18 UTC · открыть коммит на GitHub →

27 Средний HTTP.sys сохраняет каждый Set-Cookie header HTTP_RESPONSE.AddCustomHeader отправляет respSetCookie через массив unknown headers, сохраняя повторные Set-Cookie вместо перезаписи в одном known-header field. Исправления mormot.lib.winhttp ed828cab+5-4

net: fixed several respSetCookie / Set-Cookie: values in http.sys

Влияние

Приложения Windows HTTP.sys с несколькими cookies в одном response теперь доставляют их все. Другие Delphi/FPC HTTP server backends не затронуты.

Модули

Arnaud Bouchez · 14:38 UTC · открыть коммит на GitHub →

28 Средний WebSocket callback waits следуют effective receive timeout THttpClientWebSockets инициализируется через DoCreate, а SetReceiveTimeout задаёт CallbackAnswerTimeOutMS из stored fReceiveTimeout после inherited setter. Исправления mormot.net.ws.client 881d1c4e+4-4

net: fixed THttpClientWebSockets with new timeouts

Влияние

WebSocket callback waits теперь соответствуют effective receive timeout после normalization в Delphi/FPC clients.

Стоит взглянуть

Arnaud Bouchez · 10:32 UTC · открыть коммит на GitHub →

29 Средний Списки proxy bypass сохраняются при сериализации options THttpRequestExtendedOptions.Save сохраняет ProxyByPass под ключом pb, а Load восстанавливает его вместе с proxy, auth, TLS и timeout fields. Исправления mormot.net.client ac6bc5d6+5-2

net: fixed THttpRequestExtendedOptions.ProxyByPass serialization

Влияние

Код Delphi/FPC с persisted HTTP options больше не теряет proxy bypass list после загрузки. Старые данные без нового ключа остаются читаемыми.

Стоит взглянуть

Модули

Arnaud Bouchez · 13:43 UTC · открыть коммит на GitHub →

30 Средний Extended HTTP options получили proxy bypass list THttpRequestExtendedOptions добавляет public ProxyByPass, THttpRequest удаляет duplicate storage, а WinHTTP, WinINet и Curl читают proxy через options record. Новые возможности mormot.net.client 2febb8e3+19-19

net: introducing THttpRequestExtendedOptions.ProxyBypass field

Влияние

Delphi/FPC callers с extended-options constructor теперь могут напрямую задать native proxy bypass list. Существующие constructor parameters остаются.

Стоит взглянуть

Публичный API

  • THttpRequestExtendedOptions.ProxyByPassadded

Модули

Arnaud Bouchez · 11:02 UTC · открыть коммит на GitHub →

31 Средний Chunked uploads HTTP.sys геометрически наращивают buffer Путь chunked body сохраняет первый блок напрямую и растит InContent через NextGrow перед копированием следующих блоков вместо realloc на каждом receive. Производительность mormot.net.server c8d7648a+11-5

net: optimized memory allocation for http.sys #637 chunked input body

Влияние

Крупные или фрагментированные chunked uploads в Windows HTTP.sys выполняют меньше аллокаций и копирований. Интерфейсы Delphi/FPC не меняются.

Модули

Arnaud Bouchez · 17:54 UTC · PR #637 · открыть коммит на GitHub →

32 Средний Неоднозначный helper bodyless-method помечен deprecated HttpMethodWithNoBody помечен deprecated; документация направляет response logic к IsHead, а наличие request body — к message framing. Устаревание mormot.net.http a65a05fa+6-8

net: marked HttpMethodWithNoBody() as deprecated

Влияние

Delphi/FPC callers получают deprecation warning. Сохранение helper может оставить неверное предположение, что OPTIONS не имеет тела.

Стоит взглянуть

Публичный API

  • HttpMethodWithNoBodydeprecated

Модули

Arnaud Bouchez · 15:10 UTC · открыть коммит на GitHub →

33 Средний REST HTTP clients переходят на consolidated timeout record TRestHttpClientGeneric записывает connect/send/receive в fExtendedOptions и вызывает ComputeTimeouts в constructors и загрузке definitions; proxy strings остаются RawUtf8 без ANSI conversion. Внутреннее устройство mormot.rest.http.client f54c3e10+17-37

rest: rewritten TRestHttpClient with latest changes

Влияние

REST HTTP clients используют те же timeout defaults, что native clients, и сохраняют non-ASCII proxy text. Public Delphi/FPC syntax не меняется.

Стоит взглянуть

Arnaud Bouchez · 10:35 UTC · открыть коммит на GitHub →

34 Средний REST HTTP clients хранят proxy только в extended options TRestHttpClientRequest удаляет дубли fProxyName/fProxyByPass, сериализует значения из fExtendedOptions и создаёт THttpRequest через overload TUri plus options. Внутреннее устройство mormot.rest.http.client bdfe38d5+16-14

rest: removed TRestHttpClientRequest fProxyName/fProxyPass fields

Влияние

Proxy settings получают один source of truth в REST clients Delphi/FPC. Public constructors и connection definitions сохраняют интерфейс.

Стоит взглянуть

Arnaud Bouchez · 12:34 UTC · открыть коммит на GitHub →

35 Низкий Async connections соблюдают configured loopback policy TAsyncConnection.Create и Recycle передают RemoteIPLocalHostAsVoidInServers в TNetAddr.IP вместо постоянного преобразования loopback в пустой RemoteIP. Исправления mormot.net.async+1 16543664+7-7

net: TAsynConnection follow RemoteIPLocalHostAsVoidInServers

Влияние

Delphi/FPC async servers теперь могут сообщать 127.0.0.1 при false global policy, как sync servers. Миграция кода не нужна.

Arnaud Bouchez · 14:11 UTC · открыть коммит на GitHub →

36 Низкий Тесты методов теперь покрывают конкретные predicates HTTP-кода test.core.base удаляет assertions HttpMethodWithNoBody и добавляет явные positive/negative cases для IsGet, IsPost, IsPut, IsDelete, IsHead и IsOptions. Тесты test.core.base a166d116+31-15

tests: remove HttpMethodWithNoBody() but use really used methods

Влияние

Это только test coverage изменения semantics; сам коммит не меняет application code Delphi или FPC.

Модули

Arnaud Bouchez · 15:12 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