Agir maintenantpeut affecter un système en production
Les états HTTP se stabilisent et la fermeture Unix cesse de supprimer les sockets serveur
Cette édition très orientée réseau achève une vaste réécriture des clients HTTP et des délais, puis corrige les régressions de constructeurs, proxy, WebSocket et backends natifs apparues en chemin. Le framing HTTP distingue désormais la sémantique des réponses HEAD des corps de requête, HTTP.sys sous Windows accepte les uploads chunked et les en-têtes répétés d’authentification ou de cookie, et les clients POSIX ne suppriment plus le socket Unix du serveur à leur fermeture.
En bref
- 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.
Conseil de mise à jour
Adoptez le build final 2.4.17433 plutôt qu’un build intermédiaire de cette édition : les derniers commits réparent les constructeurs, setters de délai, choix du proxy, parsing des définitions REST, corps de redirection et états serveur HTTP. Les déploiements POSIX avec sockets Unix et les serveurs HTTP.sys Windows doivent prioriser la mise à jour. Avant compilation, recherchez THttpRequestExtendedOptions.GetTimeouts, les surcharges paramétrées de THttpRequest.InternalConnect et TCrtSocket.ReOpen(timeout).
36 sur 36 entrées · 37 commits upstream
1
Critique
La réutilisation d’options HTTP ne lit plus hors du record d’authentification
THttpClientSocket.SameOpenOptions passe @aOptions à THttpRequestExtendedOptions.SameAuth au lieu de @aOptions.Auth, fournissant le pointeur de base attendu et supprimant le mauvais accès mémoire.
Correctifs
mormot.net.client
b466ee53+3-3
net: fixed wrong memory access in THttpClientSocket.SameOpenOptions
Impact
Les vérifications de réutilisation HTTP Delphi/FPC ne lisent plus de mémoire étrangère, évitant des comparaisons d’authentification erronées et une possible violation d’accès.
Mise à jour recommandée
Ne déployez pas le build intermédiaire précédent ; retestez la réutilisation keep-alive authentifiée avec 2.4.17433.
Unités
2
Élevée
Le stockage des délais socket est simplifié et ReOpen perd son paramètre
TCrtSocket remplace les champs de fallback par des valeurs concrètes de connexion, envoi et réception, suit les valeurs SO_*TIMEO appliquées, copie les réglages avec SetTimeoutsFrom et transforme ReOpen(aTimeout) en ReOpen sans paramètre utilisant les valeurs stockées.
Ruptures
mormot.net.sock
7f8a625b+114-155
net: rewritten TCrtSocket timeouts implementation
Impact
Les appels passant un délai à ReOpen ne compilent plus. Les applications Delphi et FPC doivent régler ConnectTimeout, SendTimeout et ReceiveTimeout avant ReOpen ; écrire TimeOut règle désormais les trois.
Migration nécessaire
Remplacez ReOpen(timeout) par l’affectation des propriétés de délai suivie de ReOpen, puis retestez les sockets acceptés et reconnexions proxy/TLS.
API publique
TCrtSocket.ReOpensignature-changed — Le paramètre de délai est supprimé ; les délais de phase stockés sont utilisés.TCrtSocket.SetTimeoutsFromaddedTCrtSocket.TimeOutbehaviour-changed — L’écrire règle désormais les trois délais de phase.
Unités
3
Élevée
Les options HTTP étendues calculent désormais des délais concrets
THttpRequestExtendedOptions.GetTimeouts est supprimé et ComputeTimeouts remplit les valeurs de phase manquantes avec les constantes HTTP ou CreateTimeoutMS. THttpClientSocket les copie dans TCrtSocket et la réutilisation de connexion ne compare plus les délais.
Ruptures
mormot.net.client
3d81851d+42-45
net: fixed THttpClientSocket timeouts usage
Impact
Les appels directs à GetTimeouts ne compilent plus sous Delphi ou FPC et doivent passer à la méthode mutante ComputeTimeouts. Modifier seulement les délais ne force plus une reconnexion HTTP.
Migration nécessaire
Remplacez les appels GetTimeouts par ComputeTimeouts, puis lisez ConnectTimeoutMS, SendTimeoutMS et ReceiveTimeoutMS dans le record.
API publique
THttpRequestExtendedOptions.GetTimeoutsremovedTHttpRequestExtendedOptions.ComputeTimeoutsadded
Unités
4
Élevée
Les backends HTTP lisent désormais les options depuis l’instance
THttpRequest.InternalConnect perd ses trois paramètres de délai ; les overrides WinHTTP, WinINet, Curl et Delphi NetHTTP lisent fExtendedOptions. La construction initialise URI et options avant d’appeler la méthode virtuelle sans paramètre.
Ruptures
mormot.net.client
edbd697a+39-43
net: rewritten THttpRequest.InternalConnect method
Impact
Les descendants personnalisés de THttpRequest qui surchargent InternalConnect ne compileront plus sous Delphi ou FPC avant mise à jour de la signature et de la lecture des délais.
Migration nécessaire
Passez les overrides à procedure InternalConnect; et lisez fExtendedOptions.ConnectTimeoutMS, SendTimeoutMS et ReceiveTimeoutMS.
API publique
THttpRequest.InternalConnectsignature-changed
Unités
5
Élevée
Les redirections et 100-Continue gèrent désormais le bon corps
THttpClientSocket efface Data, DataMimeType et InStream lorsqu’un POST 301 ou un 303 éligible devient GET, émet les headers pour un stream fourni, et les serveurs envoient 100 Continue seulement si Content-Length ou le framing chunked déclare un corps.
Correctifs
mormot.net.async+2
bdb952f3+27-23
net: some client/server HTTP state machine fixes
Impact
Les requêtes Delphi/FPC redirigées n’envoient plus d’anciennes données avec un GET réécrit, et les clients ne sont plus invités à transmettre un corps sans framing côté serveur.
Mise à jour recommandée
Retestez les uploads streamés, redirections POST vers GET, réponses 303 et clients Expect: 100-Continue.
6
Élevée
Le parsing des définitions REST ne peut plus boucler indéfiniment
TRestHttpClientGeneric.RegisteredClassCreateFrom remplace une chaîne d’appels UrlDecode par UrlDecodeNextNameValue, qui avance une fois pour chaque paire nom/valeur avant de traiter les options connues.
Correctifs
mormot.crypt.secure+1
9292c506+27-20
rest: fixed TRestHttpClientGeneric.RegisteredClassCreateFrom
Impact
Les clients Delphi et FPC créés depuis TSynConnectionDefinition ne risquent plus de rester bloqués quand DatabaseName contient des options que l’ancienne chaîne ne faisait pas avancer.
Mise à jour recommandée
Retestez les définitions de connexion REST persistées, y compris les options inconnues et URI-encodées.
7
Élevée
OPTIONS peut porter du contenu ; seul HEAD supprime le corps de réponse
Le code client et serveur remplace HttpMethodWithNoBody par IsHead pour les corps de réponse et par le framing pour les corps de requête. Curl n’active plus CURLOPT_NOBODY pour OPTIONS.
Correctifs
mormot.net.acme+3
f119fd8c+18-19
net: only HEAD has no body - OPTIONS could
Impact
Les serveurs Delphi et FPC lisent désormais les corps OPTIONS encadrés et les clients peuvent recevoir leur contenu de réponse. Les applications supposant OPTIONS sans corps peuvent voir de nouvelles données.
Mise à jour recommandée
Testez les endpoints OPTIONS avec corps de requête et de réponse, ainsi que les réponses HEAD et requêtes HEAD encadrées.
8
Élevée
Les options Curl se réinitialisent proprement et restaurent la vérification TLS
TCurlHttp règle toujours coFollowLocation depuis RedirectMax et restaure explicitement coSSLVerifyPeer et coSSLVerifyHost lorsque les erreurs de certificat ne sont pas ignorées, puis applique certificat client ou CA personnalisée.
Correctifs
mormot.net.client
cf40c09d+19-15
net: several fixes to TCurlHttp options usage
Impact
Les handles Curl réutilisés ne conservent plus l’état de redirection ou TLS relâché d’une requête précédente. Les clients Curl POSIX Delphi/FPC retrouvent la vérification configurée.
Mise à jour recommandée
Retestez des requêtes mixtes alternant redirection et vérification TLS sur un même client Curl.
Unités
9
Élevée
Les mises à jour groupées appellent désormais les setters des sous-classes
TCrtSocket.SetTimeouts revient comme helper public : il affecte ConnectTimeout et appelle les méthodes virtuelles SetSendTimeout et SetReceiveTimeout. SetTimeoutsFrom et DoCreate suivent ce chemin afin d’exécuter les overrides WebSocket.
Correctifs
mormot.net.client+1
93002192+18-16
net: fixed TCrtSocket virtual timeout setters call
Impact
THttpClientWebSockets garde maintenant CallbackAnswerTimeOutMS synchronisé quand les délais passent par les helpers de base. Les hooks des sous-classes Delphi/FPC sont de nouveau appelés.
Mise à jour recommandée
Retestez les changements de délai WebSocket via TimeOut, SetTimeouts et la copie d’options socket.
10
Élevée
Les serveurs HTTP lisent tout corps encadré, même avec HEAD
Les chemins serveur synchrones et asynchrones déclenchent le streaming et DownloadBody selon Content-Length ou Transfer-Encoding au lieu d’exclure HEAD. Le traitement async de 100-Continue est limité aux états attendant un corps.
Correctifs
mormot.net.async+1
0e0af8c7+14-19
net: fixed body retrieval on HTTP servers logic
Impact
Les octets d’une requête encadrée sont consommés de façon cohérente, évitant la désynchronisation du protocole sur les connexions keep-alive même pour HEAD. Les backends Delphi et FPC en bénéficient.
Mise à jour recommandée
Ajoutez les requêtes HEAD encadrées aux tests keep-alive et OnBodyDownload.
11
Élevée
Fermer un client Unix ne supprime plus le socket serveur
TCrtSocket.Close n’appelle désormais fpunlink pour nlUnix que lorsque fWasBind est présent. Le test ouvre un client sur un chemin bindé et vérifie que seul le serveur supprime le fichier.
Correctifs
mormot.net.sock+1
5b58dd54+19-2
net: TCrtSocket.Close only deletes a unix socket file it bound itself
Impact
Sous Delphi et FPC POSIX, la déconnexion d’un client ne rend plus le serveur Unix actif inaccessible aux nouveaux clients en supprimant son entrée filesystem.
Mise à jour recommandée
Priorisez la mise à jour si vous utilisez des sockets Unix et vérifiez que les connexions client répétées préservent le chemin bindé.
API publique
TCrtSocket.Closebehaviour-changed
12
Élevée
WinINet applique les délais au handle de session
TWinINet.InternalConnect appelle InternetSetOption sur fSession plutôt que sur fConnection pas encore créé et lève une erreur explicite si le réglage d’un délai échoue.
Correctifs
mormot.net.client
94043c0a+11-8
net: fixed TWinINet.InternalConnect timeouts setting
Impact
Les clients Windows WinINet reçoivent réellement les délais configurés au lieu d’appeler silencieusement l’API avec un handle nil. Les échecs sont visibles pour Delphi.
Mise à jour recommandée
Validez les délais de connexion, upload et réponse avec le backend WinINet.
Unités
13
Élevée
La construction HTTP appelle le backend après initialisation complète
THttpRequest.DoInternalConnect affecte fHttps avant de choisir le port par défaut et restaure l’appel InternalConnect manquant après calcul des options.
Correctifs
mormot.net.client
9482ca12+4-3
net: fixed previous THttpRequest commit
Impact
HTTPS utilise de nouveau le port 443 par défaut et les backends HTTP natifs ouvrent réellement leurs sessions. Cela répare le refactoring précédent pour Delphi et FPC.
Mise à jour recommandée
Évitez le build 2.4.17413 et utilisez le build final après avoir retesté les constructeurs HTTP et HTTPS.
Unités
14
Élevée
Les serveurs HTTP.sys reçoivent désormais les corps chunked
THttpApiServer.DoExecute distingue maintenant Content-Length connu des entrées transfer-encoded, boucle HttpReceiveRequestEntityBody dans un buffer réutilisable de 128 Ko pour le chunked, applique MaximumAllowedContentLength et rapporte les octets réellement reçus.
Nouveautés
mormot.lib.winhttp+1
7baf2887+77-54
net: let http.sys server support chunked input body
Impact
Les backends Windows HTTP.sys peuvent accepter les uploads HTTP/1.1 chunked au lieu de les rejeter ou tronquer. Les corps de longueur inconnue trop grands reçoivent 413 et les erreurs de réception 406.
Mise à jour recommandée
Testez les uploads chunked autour de MaximumAllowedContentLength et vérifiez les limites applicatives et le traitement de 413.
15
Élevée
Les constructeurs HTTP partagent un chemin d’initialisation entre backends
THttpRequest ajoute DoInternalConnect pour initialiser URI, user-agent et délais avant l’appel virtuel backend ; Curl utilise la plus grande valeur envoi/réception pour son délai global et Delphi NetHTTP lit l’option proxy consolidée.
Sous le capot
mormot.net.client
70951dd7+28-29
net: several fixes to THttpRequest.Create
Impact
Tous les backends natifs suivent une séquence commune, mais ce refactoring intermédiaire a nécessité le commit suivant pour restaurer l’appel backend et corriger le port HTTPS.
À regarder
Unités
16
Moyenne
Les réceptions socket appliquent le délai à chaque tentative
TCrtSocket.TrySockRecv calcule une échéance pour chaque appel Recv, force une attente nulle pendant SockInPending et borne la valeur restante avant select ou poll.
Correctifs
mormot.net.sock
0f8d2fcd+15-13
net: rewritten TCrtSocket.TrySockRecv timeout logic
Impact
Les attentes de réception Delphi/FPC suivent ReceiveTimeout par tentative bas niveau, tandis que les sondes de buffer en attente restent non bloquantes.
À regarder
Unités
17
Moyenne
Les redirections HTTP préservent les méthodes hors conversions GET définies
TAcmeLetsEncryptServer utilise 301 pour GET et HEAD et 308 sinon. THttpClientSocket ne convertit que POST sur 301 et toutes les méthodes sauf HEAD sur 303, tandis que la construction n’écarte plus un corps HEAD explicite.
Correctifs
mormot.net.acme+2
8a6da8b7+14-12
net: other HTTP HEAD support related fixes
Impact
Les clients Delphi et FPC conservent PUT, DELETE et les autres méthodes sur 301 tout en suivant 303 ; les redirections ACME vers HTTPS préservent les méthodes non-GET avec 308.
À regarder
18
Moyenne
Les envois socket utilisent une échéance monotone par tentative
TCrtSocket.TrySndLow calcule une échéance GetTickCount64 pour chaque tentative Send et passe le reste de fSendTimeout à WaitFor au lieu du TimeOut global historique.
Correctifs
mormot.net.sock
b05f8522+12-8
net: rewritten TCrtSocket.TrySndLow timeout/wait logic
Impact
Les envois bloqués Delphi/FPC respectent plus précisément le délai d’envoi et ne réinitialisent pas l’attente complète après le temps déjà passé dans Send.
À regarder
Unités
19
Moyenne
Les lectures en attente évitent l’attente sans modifier les délais socket
TCrtSocket ajoute le flag interne fSockInPending autour d’InputSock ; SockInRead et TrySockRecv l’utilisent pour éviter les retries sans toucher SO_RCVTIMEO ni fReceiveTimeout.
Correctifs
mormot.net.sock
057aff56+7-9
net: fixed TCrtSocket.SockInPending from InputSock()
Impact
SockInPending reste non bloquant sans altérer temporairement le délai logique de réception, améliorant la cohérence des sockets bufferisés Delphi/FPC.
À regarder
Unités
20
Moyenne
L’initialisation WebSocket passe par le hook socket partagé
THttpClientWebSockets remplace son override de constructeur par DoCreate, appelle inherited DoCreate, initialise les réglages et tire CallbackAnswerTimeOutMS de fReceiveTimeout.
Correctifs
mormot.net.ws.client
7ceaa39c+6-8
net: fixed THttpClientWebSockets constructor
Impact
Chaque constructeur hérité initialise désormais une seule fois les réglages WebSocket via le hook virtuel sous Delphi et FPC, évitant une initialisation manquée ou doublée.
À regarder
Unités
21
Moyenne
Curl peut désactiver explicitement les réglages proxy hérités
Quand THttpRequestExtendedOptions.Proxy vaut 'none', TCurlHttp passe une chaîne vide non nil à CURLOPT_PROXY ; une option vide laisse les defaults d’environnement Curl et une vraie valeur choisit ce proxy.
Correctifs
mormot.net.client
68b62f05+8-5
net: fixed TCurlHttp proper 'none' proxy support
Impact
Les requêtes Curl POSIX peuvent ignorer de façon fiable HTTP_PROXY et les variables associées. Les appelants Delphi/FPC continuent d’utiliser la valeur documentée 'none'.
À regarder
Unités
22
Moyenne
WinINet ouvre les valeurs user-agent et proxy en Unicode
TWinINet.InternalConnect convertit user-agent, proxy et liste bypass de RawUtf8 vers SynUnicode et appelle InternetOpenW au lieu de InternetOpenA.
Correctifs
mormot.net.client
3851e090+8-5
net: fixed TWinINet Unicode options support
Impact
Les clients Delphi Windows préservent les configurations user-agent et proxy non ASCII au lieu de les encoder via la page ANSI active. Les chemins FPC non Windows ne changent pas.
À regarder
Unités
23
Moyenne
L’authentification Kerberos basic Windows utilise le contexte serveur complet
TBasicAuthServerKerberos limite le raccourci onlypass en un passage à GSSAPI POSIX ; Windows suit désormais le chemin ServerSspiAuth requis par SSPI et les contrôles optionnels de SID de groupe.
Correctifs
mormot.net.ldap+1
8fc28980+7-6
net: fixed TBasicAuthServerKerberos on Windows
Impact
Les serveurs Delphi Windows n’empruntent plus un raccourci réservé à GSSAPI lors de la validation basic Kerberos. Le comportement POSIX FPC est conservé.
Mise à jour recommandée
Retestez les logins basic Kerberos Windows avec et sans restrictions de SID de groupe.
24
Moyenne
La sélection du proxy système vérifie désormais l’hôte destination
GetSystemProxyUri utilise TUri.Server au lieu de Address pour exclure du proxy les destinations vides, loopback ou IPv4 directes.
Correctifs
mormot.net.client+1
d8e97dc6+5-6
net: fixed GetSystemProxyUri()
Impact
Les clients HTTP ne décident plus du proxy à partir du chemin URL. Le trafic localhost et IPv4 direct doit contourner le proxy comme prévu sous Delphi et FPC.
Mise à jour recommandée
Retestez localhost, les IPv4 littérales et les noms d’hôte avec la découverte automatique du proxy.
25
Moyenne
Les redirections GET ACME utilisent 301 au lieu de 308
TAcmeLetsEncryptServer.Redirect place GET avec HEAD dans la branche 301 Moved Permanently et conserve 308, qui préserve la méthode, pour les autres méthodes.
Correctifs
mormot.net.acme
9cd6ccba+5-4
net: fixed GET redirection on TAcmeLetsEncryptServer
Impact
Le trafic GET des navigateurs et ACME reçoit la redirection permanente conventionnelle. Le code applicatif Delphi/FPC ne change pas.
Unités
26
Moyenne
HTTP.sys conserve séparément les challenges d’authentification répétés
HTTP_RESPONSE.AddCustomHeader traite WWW-Authenticate et Proxy-Authenticate comme Set-Cookie et Connection, en envoyant chaque occurrence via les unknown headers au lieu d’un unique slot connu.
Correctifs
mormot.lib.winhttp
37898a45+6-3
net: http.sys respWwwAuthenticate + respProxyAuthenticate multiple headers
Impact
Les réponses Windows HTTP.sys peuvent annoncer plusieurs schémas d’authentification sans perdre les valeurs suivantes. Aucun changement Delphi/FPC n’est requis.
À regarder
Unités
27
Moyenne
HTTP.sys préserve chaque en-tête Set-Cookie
HTTP_RESPONSE.AddCustomHeader envoie respSetCookie dans le tableau des unknown headers afin de conserver les lignes Set-Cookie répétées au lieu de les écraser dans le champ connu unique.
Correctifs
mormot.lib.winhttp
ed828cab+5-4
net: fixed several respSetCookie / Set-Cookie: values in http.sys
Impact
Les applications Windows HTTP.sys qui définissent plusieurs cookies dans une réponse les livrent désormais tous. Les autres backends serveur Delphi/FPC ne sont pas affectés.
Mise à jour recommandée
Retestez les réponses de login et session qui émettent plusieurs lignes Set-Cookie.
Unités
28
Moyenne
Les attentes callback WebSocket suivent le délai de réception effectif
THttpClientWebSockets s’initialise via DoCreate et SetReceiveTimeout affecte CallbackAnswerTimeOutMS depuis fReceiveTimeout après le setter inherited.
Correctifs
mormot.net.ws.client
881d1c4e+4-4
net: fixed THttpClientWebSockets with new timeouts
Impact
Les attentes callback WebSocket correspondent désormais au délai effectif après normalisation sur les clients Delphi et FPC.
À regarder
Unités
29
Moyenne
Les listes d’exclusion proxy survivent à la sérialisation
THttpRequestExtendedOptions.Save ajoute ProxyByPass sous la clé pb et Load le restaure avec les champs proxy, authentification, TLS et délais existants.
Correctifs
mormot.net.client
ac6bc5d6+5-2
net: fixed THttpRequestExtendedOptions.ProxyByPass serialization
Impact
Le code Delphi et FPC qui persiste les options HTTP ne perd plus sa liste bypass après rechargement. Les anciennes données restent lisibles sans la nouvelle clé.
À regarder
Unités
30
Moyenne
Les options HTTP étendues gagnent une liste d’exclusion proxy
THttpRequestExtendedOptions ajoute ProxyByPass public et THttpRequest supprime le stockage dupliqué ; WinHTTP, WinINet et Curl lisent le proxy via le record d’options.
Nouveautés
mormot.net.client
2febb8e3+19-19
net: introducing THttpRequestExtendedOptions.ProxyBypass field
Impact
Les appelants Delphi/FPC utilisant le constructeur avec options peuvent fournir directement une liste native d’exclusion proxy. Les paramètres existants restent disponibles.
À regarder
API publique
THttpRequestExtendedOptions.ProxyByPassadded
Unités
31
Moyenne
Les uploads chunked HTTP.sys font croître leur buffer géométriquement
Le chemin chunked stocke directement le premier bloc et agrandit InContent avec NextGrow avant de copier les blocs suivants, au lieu de réallouer la chaîne à chaque réception.
Performance
mormot.net.server
c8d7648a+11-5
net: optimized memory allocation for http.sys #637 chunked input body
Impact
Les uploads chunked grands ou fragmentés sous Windows HTTP.sys allouent et copient moins de mémoire. Les interfaces applicatives Delphi et FPC ne changent pas.
Unités
32
Moyenne
Le helper ambigu des méthodes sans corps est déprécié
HttpMethodWithNoBody est marqué deprecated ; sa documentation renvoie les décisions de réponse vers IsHead et impose le framing pour déterminer la présence d’un corps de requête.
Obsolescences
mormot.net.http
a65a05fa+6-8
net: marked HttpMethodWithNoBody() as deprecated
Impact
Les appelants Delphi et FPC reçoivent un avertissement de dépréciation. Garder ce helper peut conserver l’hypothèse erronée qu’OPTIONS n’a pas de corps.
À regarder
API publique
HttpMethodWithNoBodydeprecated
Unités
33
Moyenne
Les clients REST HTTP adoptent le record de délais consolidé
TRestHttpClientGeneric affecte les délais à fExtendedOptions et appelle ComputeTimeouts dans les constructeurs et le chargement des définitions ; les chaînes proxy restent RawUtf8 sans conversion ANSI.
Sous le capot
mormot.rest.http.client
f54c3e10+17-37
rest: rewritten TRestHttpClient with latest changes
Impact
Les clients REST HTTP partagent les mêmes délais par défaut que les clients natifs et préservent le texte proxy non ASCII. La syntaxe publique Delphi/FPC ne change pas.
À regarder
Unités
34
Moyenne
Les clients REST HTTP stockent le proxy uniquement dans les options étendues
TRestHttpClientRequest supprime les champs fProxyName et fProxyByPass dupliqués, sérialise les valeurs de fExtendedOptions et construit THttpRequest via la surcharge TUri plus options.
Sous le capot
mormot.rest.http.client
bdfe38d5+16-14
rest: removed TRestHttpClientRequest fProxyName/fProxyPass fields
Impact
Les réglages proxy ont désormais une source unique dans les clients REST Delphi/FPC. Les constructeurs publics et définitions de connexion gardent leur surface.
À regarder
Unités
35
Faible
Les connexions async respectent la politique d’adresse loopback
TAsyncConnection.Create et Recycle passent RemoteIPLocalHostAsVoidInServers à TNetAddr.IP au lieu de convertir systématiquement loopback en RemoteIP vide.
Correctifs
mormot.net.async+1
16543664+7-7
net: TAsynConnection follow RemoteIPLocalHostAsVoidInServers
Impact
Les serveurs async Delphi/FPC peuvent désormais rapporter 127.0.0.1 lorsque la politique globale vaut false, comme les serveurs synchrones. Aucune migration n’est requise.
36
Faible
Les tests couvrent désormais les prédicats concrets utilisés par HTTP
test.core.base retire les assertions HttpMethodWithNoBody et ajoute des cas positifs et négatifs explicites pour IsGet, IsPost, IsPut, IsDelete, IsHead et IsOptions.
Tests
test.core.base
a166d116+31-15
tests: remove HttpMethodWithNoBody() but use really used methods
Impact
Il s’agit uniquement de couverture de test pour le changement de sémantique ; ce commit seul ne modifie pas le code applicatif Delphi ou FPC.