Agir maintenantpeut affecter un système en productionLes 26 commits non-merge de 2.4.17162 à 2.4.17187 ont été examinés : 989 ajouts et 286 suppressions hors version bookkeeping. Aucun superseded_by ; les plages à éviter viennent de correctifs inspectés dans les mêmes routines. Aucun défaut final non résolu identifié.
Les redirects URI se stabilisent, heartbeat et sessions se rétablissent
La pile URI est réécrite selon RFC 3986 avec résolution des Location relatives, puis stabilisée jusqu’à la build 2.4.17187 avant son adoption par les redirects HTTP. Les utilisateurs en production reçoivent aussi le correctif successeur des heartbeats WebSocket async désactivés, des timeouts Signed URI et REST corrigés, un proxy cache plus sûr au démarrage et à l’arrêt, et les écritures IOCP directes optionnelles sous Windows. Les appels externes à ESynSspi.RaiseLastOSError doivent migrer.
En bref
- Visez le head 215c7bbd240419735ad7e89f5d35ddc9cfeb8b4d, build 2.4.17187, pour la séquence URI et redirect complète.
- La build 2.4.17171 rétablit les callbacks heartbeat WebSocket async désactivés par la comparaison idle précédente.
- L’ordre des timestamps Signed URI et le calcul du timeout REST sont corrigés pour les services longs et le rollover 32-bit.
- Les proxy caches Windows peuvent écrire directement via IOCP et évitent des races de démarrage et suppression.
- Remplacez les appels externes ESynSspi.RaiseLastOSError par ESynSspi.RaiseSspiError.
- Évitez 2.4.17162–2.4.17170 pour heartbeat et 2.4.17176–2.4.17186 pour la séquence URI incomplète.
Conseil de mise à jour
Passez à la build 2.4.17187 au head 215c7bbd240419735ad7e89f5d35ddc9cfeb8b4d sans vous arrêter dans la réécriture URI. Priorité aux utilisateurs WebSocket, Signed URI, sessions REST, SOA et proxy cache. Remplacez ESynSspi.RaiseLastOSError par ESynSspi.RaiseSspiError, puis testez redirects relatifs, credentials et débit proxy Windows.
26 sur 26 entrées · 26 commits upstream
1
Élevée
Les sessions Signed URI gèrent correctement le rollover
RetrieveSession compare les timestamps par delta modulaire signé, ne met à jour le dernier que s’il est plus récent et aligne startup/rollover 32-bit.
Sécurité
mormot.rest.server
1c193929+31-25
rest: fixed TRestServerAuthenticationSignedUri.RetrieveSession parsing
Impact
Les services Signed URI longs ne rejettent plus des timestamps valides près du démarrage ou du rollover.
Mise à jour recommandée
Priorisez ce commit pour Signed URI et testez les fenêtres replay au rollover.
Unités
2
Élevée
Les redirects HTTP résolvent Location via TUri
THttpClientSocket remplace le parsing manuel par TUri.FromLocation, laisse OnRedirect modifier Location/options et décide reconnect, credentials et rejet depuis l’URI parsée.
Correctifs
mormot.net.client
150674b6+69-66
net: fixed THttpClientSocket 3xx redirection Location: parsing
Impact
Les redirects relatifs, absolus et scheme-relative sont cohérents, mais ce premier port nécessite le correctif suivant.
Mise à jour recommandée
Prenez seulement la séquence complète jusqu’à 2.4.17187 et testez les callbacks.
API publique
THttpClientSocket redirect Location handlingbehaviour-changed — Utilise TUri.FromLocation conforme RFC 3986.
Unités
3
Élevée
Les défauts initiaux du parser URI sont corrigés
From et FromLocation corrigent la longueur directe, refusent un port explicite vide, réparent types/limites et la résolution relative.
Correctifs
mormot.net.sock
50b2e69c+25-37
net: fixed TUri.From/FromLocation methods
Impact
N’utilisez pas les premières builds du parser : ports malformés et certaines longueurs étaient mal traités.
Mise à jour recommandée
Prenez ce commit et tous les fixes URI jusqu’à 2.4.17187.
Unités
4
Élevée
TUri.FromScheme synchronise les schemes texte et enum
TUri.FromScheme affecte désormais Scheme depuis TUriScheme en plus de UriScheme, avec tests HTTP, HTTPS, WS, WSS, FTP et LDAPS.
Correctifs
mormot.net.sock
215c7bbd+14-11
net: fixed TUri.FromScheme
Impact
URI, SameUri et Https après FromScheme reçoivent le scheme attendu ; 2.4.17186 peut produire un TUri incohérent.
Mise à jour recommandée
Visez 2.4.17187 et testez les appels FromScheme lisant Scheme, URI ou Https.
API publique
TUri.FromSchemebehaviour-changed — Initialise UriScheme et Scheme.
Unités
5
Élevée
Les contrôles d’origine et l’état retry sont stabilisés
THttpClientSocket calcule cross-origin après parsing de Location, supprime RedirectCrossOrigin, restaure l’état HTTP si reopen échoue et FromScheme renseigne UriScheme.
Correctifs
mormot.net.client+1
eb38a32d+10-7
net: one last set of fixes before the week-end
Impact
La policy credentials utilise la cible réelle et un reconnect échoué ne laisse plus l’état partiel.
Mise à jour recommandée
Ne restez pas sur 2.4.17183 ; prenez ce correctif et le fix final FromScheme.
6
Élevée
La découverte SOA respecte les timeouts actifs
TServicesPublishedInterfacesList corrige les comparaisons expired/live pour conserver les interfaces valides et renouveler les entrées expirables.
Correctifs
mormot.soa.core
712db4b8+9-8
soa: fixed TServicesPublishedInterfacesList timeout logic
Impact
La découverte avec timeout non nul ne masque plus les services actifs et ne saute plus leur refresh.
Mise à jour recommandée
Priorisez les registres SOA à publications expirables et vérifiez le renewal.
Unités
7
Élevée
Le démarrage proxy cache ne race plus le worker idle
THttpProxyServer ajoute fUrlSet et fait sortir OnIdle avant la fin de l’initialisation URL, corrigeant un GPF aléatoire.
Correctifs
mormot.net.async
7060c16c+8-3
net: fixed random GPF at THttpProxyServer startup
Impact
Les proxy caches évitent une race d’initialisation pouvant crasher avant la fin de Start.
Mise à jour recommandée
Mettez à niveau les proxy caches avec le guard shutdown suivant.
Unités
8
Élevée
La suppression proxy cache s’arrête sûrement au shutdown
THttpProxyServer efface fUrlSet à Stop/changement IP et le vérifie pendant les suppressions lentes.
Correctifs
mormot.net.async
98ab0d20+6-3
net: hardened Proxy Cache background deletion even more
Impact
Shutdown et reconfiguration évitent l’accès background à un état URL périmé.
Mise à jour recommandée
Prenez avec le guard startup et stressez Stop/SetRemoteIP pendant une suppression.
Unités
9
Élevée
Les heartbeats WebSocket async fonctionnent à nouveau
IdleEverySecond compare la seconde courante à l’instant autorisé, au lieu de comparer allowed au cutoff GC.
Correctifs
mormot.net.async
505684ce+4-4
net: fixed regression in TWebSocketAsyncConnections heartbeats
Impact
Les callbacks heartbeat ne s’arrêtent plus après le seuil mémoire, restaurant liveness et détection des peers morts.
Mise à jour recommandée
Mettez à niveau immédiatement et retirez le workaround LastOperationReleaseMemorySeconds=0 après validation.
Unités
10
Élevée
Le parsing TUri est réécrit autour de buffers bornés
TUri.From est réécrit via la nouvelle méthode publique FromBuffer pour scheme, user info, IPv6, port, path, query et fragment.
Sous le capot
mormot.net.sock
4dd65061+152-92
net: rewritte TUri.From() method
Impact
Le comportement URI change largement avec une entrée sans allocation ; cette première version nécessite les fixes suivants.
Mise à jour recommandée
Ne cherry-pickez pas seul ; prenez toute la séquence jusqu’à 2.4.17187.
API publique
TUri.FromBufferadded — Parse un buffer URI borné avec port par défaut optionnel.TUri.Frombehaviour-changed — Utilise le nouveau parser borné orienté RFC.
Unités
11
Moyenne
Les exceptions SSPI rapportent l’erreur SSPI reçue
ESynSspi.RaiseLastOSError devient RaiseSspiError et utilise le statut SSPI fourni au lieu de GetLastError ; Check devient CheckOK.
Ruptures
mormot.lib.sspi+1
60ef8977+31-32
lib: fixed SSPI exception message
Impact
Les diagnostics Windows deviennent exacts ; les appels externes à l’ancien helper ne compilent plus.
Migration nécessaire
Cherchez ESynSspi.RaiseLastOSError et remplacez par ESynSspi.RaiseSspiError.
API publique
ESynSspi.RaiseLastOSErrorrenamed — Renommé RaiseSspiError et rapporte le statut SSPI fourni.
12
Moyenne
La validation URI suit les cas limites RFC 3986
TUri refuse les deux-points dans le premier segment relatif, renforce authority/port/Location et étend les tests.
Correctifs
mormot.net.sock
96f4f5cf+69-57
net: follow RFC 3986 for URI parsing
Impact
Les cibles malformées sont rejetées sans ambiguïté ; les références relatives RFC 3986 valides restent supportées.
Mise à jour recommandée
Incluez dans la séquence URI complète et testez vos Location non standards.
API publique
TUri.From and TUri.FromLocationbehaviour-changed — Les références RFC 3986 malformées sont refusées plus strictement.
Unités
13
Moyenne
Le GC async gère le rollover des ticks
OneGC utilise une soustraction elapsed non signée et borne les valeurs futures pour le rollover 32-bit.
Correctifs
mormot.net.async
b67f5df7+12-10
net: fixed TAsyncConnections GC timing logic
Impact
Les serveurs async longs ne décalent ou déclenchent plus mal le GC au rollover.
Mise à jour recommandée
Mettez à niveau les serveurs async longs et testez le cleanup idle.
Unités
14
Moyenne
Le keep-alive proxy utilise le header dédié
THttpClientSocket envoie Proxy-Connection: Keep-Alive via proxy tout en conservant Connection pour les requêtes directes.
Correctifs
mormot.net.client
6c5201e6+8-6
net: try to fix THttpClientSocket over SQUID Proxy
Impact
Les connexions via SQUID sont moins susceptibles d’être fermées ou mal gérées.
Mise à jour recommandée
Mettez à niveau les clients proxy et testez HEAD/GET persistants.
Unités
15
Moyenne
La rotation HTTP hebdomadaire se déclenche au bon moment
THttpRotater inverse la comparaison pour tourner quand Tix32 atteint NextTix32, pas avant.
Correctifs
mormot.net.http
1fc47dc2+4-3
net: fixed regression in THttpRotater logic
Impact
Les backends dépendant de la rotation hebdomadaire retrouvent le calendrier prévu.
Mise à jour recommandée
Mettez à niveau les services THttpRotater et vérifiez la prochaine rotation.
Unités
16
Moyenne
TSynCache se réinitialise seulement après l’échéance
ResetIfNeeded exige fTimeoutTix non nul et reset lorsque le tick atteint l’échéance, corrigeant la comparaison inversée.
Correctifs
mormot.core.search
f975f6ac+4-3
core: fixed TSynCache.ResetIfNeeded logic
Impact
Les caches ne sont plus vidés avant expiration et expirent au moment configuré.
Mise à jour recommandée
Mettez à niveau les TSynCache temporisés et retestez rétention/expiration.
Unités
17
Moyenne
L’expiration REST ne perd plus de précision
TAuthSession multiplie SessionTimeout par MilliSecsPerMin avant le décalage, au lieu de tronquer d’abord le facteur par minute.
Correctifs
mormot.rest.server
75a6ffd2+3-3
rest: fixed TAuthSession timeout computation
Impact
Les serveurs Delphi/FPC n’expirent plus les sessions légèrement trop tôt ; 60 minutes perdaient environ 36 secondes.
Mise à jour recommandée
Mettez à niveau les serveurs REST dépendant de limites SessionTimeout précises.
Unités
18
Moyenne
TUri résout Location sans allocation
La méthode publique TUri.FromLocation résout les Location absolues, scheme-relative, root-relative et path-relative selon serveur, port et TLS.
Nouveautés
mormot.net.sock
1d79356f+264-2
net: new TUri.FromLocation() method
Impact
Le code HTTP Delphi/FPC peut remplacer le parsing manuel, mais doit prendre les correctifs suivants.
À regarder
Adoptez seulement en 2.4.17187 et testez vos Location relatives.
API publique
TUri.FromLocationadded — Resolver public de Location conforme RFC 3986.
Unités
19
Moyenne
Les redirects peuvent forcer une nouvelle connexion HTTP
THttpRedirectOption gagne hroForceReconnect pour fermer et rouvrir le socket à chaque redirect, même same-origin.
Nouveautés
mormot.net.client
49fa877c+10-6
net: new hroForceReconnect option for THttpClientSocket
Impact
Les clients derrière SQUID/E2Guardian évitent les connexions réutilisées incorrectes ; le défaut reste inchangé.
À regarder
Activez hroForceReconnect seulement pour les proxies affectés et mesurez le coût.
API publique
THttpRedirectOption.hroForceReconnectadded — Force la recréation du socket sur redirect.
Unités
20
Moyenne
Les sockets async peuvent traiter IOCP directement
TAsyncConnectionsOptions gagne acoIocpWriteDirect et Windows peut appeler ProcessWrite directement avant la queue.
Performance
mormot.net.async
7966b5fb+29-14
net: new hsoIocpWriteDirect HTTP server option for IOCP
Impact
Les serveurs async Windows opt-in réduisent l’overhead ; les chemins POSIX ne changent pas.
À regarder
Activez via l’option serveur et stressez les grandes réponses concurrentes sous Windows.
API publique
TAsyncConnectionsOptions.acoIocpWriteDirectadded — Demande les écritures IOCP directes Windows.TPollAsyncSockets.ProcessWritesignature-changed — Ajoute un paramètre Windows direct avec valeur par défaut.
Unités
21
Moyenne
Les proxy caches Windows activent les écritures IOCP directes
L’option publique hsoIocpWriteDirect mappe acoIocpWriteDirect et THttpProxyServer l’active par défaut sous Windows IOCP.
Performance
mormot.net.async+1
217c0a6b+15-11
net: enhanced Proxy Cache scaling on Windows
Impact
Le débit proxy cache Windows réduit la contention ; les autres backends gardent leur chemin.
À regarder
Benchmarquez débit et latence du proxy cache Windows.
API publique
THttpServerOption.hsoIocpWriteDirectadded — Active le traitement direct des écritures IOCP.
22
Faible
Les tests s’adaptent aux couches de traduction et anciens curl
RSA relâche son timeout sous Windows PRISM, le symbol discovery ignore SynLogVectoredHandler et les tests TFTP filtrent les versions curl problématiques.
Compilateur & plateforme
mormot.core.log+2
6250c714+47-36
test: try to adapt to some LUTI conditions
Impact
CI et Windows émulé ont moins de faux échecs ; seul le timeout RSA sous PRISM change.
23
Faible
Le parsing URI et Location gagne une large couverture
Les tests ajoutent de nombreux cas valides et invalides pour From/FromLocation : authority, IPv6, ports, query, fragment et résolution relative.
Tests
a22a5e2e+268-3
test: cover TUri.From/FromLocation methods as much as possible
Impact
Aucun changement applicatif ; les tests encadrent la réécriture et révèlent les régressions suivantes.
24
Faible
La couverture de TUri.From s’étend après la réécriture
Les tests ajoutent credentials, IPv6, ports explicites, paths, queries, fragments et entrées malformées.
Tests
d4c88e2e+33-2
tests: enhanced TUri.From() coverage
Impact
Aucun impact applicatif ; la suite soutient les correctifs suivants.
25
Faible
FromScheme reçoit des tests protocolaires ciblés
Les tests réseau couvrent TUri.FromScheme pour HTTP, HTTPS, WS, WSS, FTP, FTPS, LDAP et LDAPS avant le correctif final.
Tests
5ffe448e+24-2
tests: validate TUri.FromScheme method
Impact
Aucun changement applicatif ; les tests ont révélé le défaut corrigé ensuite.
26
Faible
Les attentes de retry TFTP sont affinées
Les tests TFTP ajustent retry et nombre de connexions pour les retransmissions supplémentaires observées.
Tests
4ba0e6f5+5-5
tests: refined TFTP server expectations
Impact
Aucun changement applicatif ; seuls les tests deviennent moins fragiles.