mORMot2 DailyLecture quotidienne des commits upstream

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.

Build2.4.17161 → 2.4.17187
Commits26
Lignes+1154 -451
Lecture4 min

26 sur 26 entrées · 26 commits upstream

Sujets
# Entrée Catégorie Unités
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.

Arnaud Bouchez · 17:25 UTC · voir le commit sur GitHub →

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.

API publique

  • THttpClientSocket redirect Location handlingbehaviour-changed — Utilise TUri.FromLocation conforme RFC 3986.

Arnaud Bouchez · 17:39 UTC · voir le commit sur GitHub →

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.

Arnaud Bouchez · 17:24 UTC · voir le commit sur GitHub →

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.

API publique

  • TUri.FromSchemebehaviour-changed — Initialise UriScheme et Scheme.

Arnaud Bouchez · 19:07 UTC · voir le commit sur GitHub →

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.

Arnaud Bouchez · 17:50 UTC · voir le commit sur GitHub →

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.

Arnaud Bouchez · 13:43 UTC · voir le commit sur GitHub →

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.

Arnaud Bouchez · 07:39 UTC · voir le commit sur GitHub →

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é.

Arnaud Bouchez · 08:00 UTC · voir le commit sur GitHub →

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.

Arnaud Bouchez · 12:25 UTC · voir le commit sur GitHub →

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.

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.

Arnaud Bouchez · 16:23 UTC · voir le commit sur GitHub →

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.

Arnaud Bouchez · 07:30 UTC · voir le commit sur GitHub →

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.

API publique

  • TUri.From and TUri.FromLocationbehaviour-changed — Les références RFC 3986 malformées sont refusées plus strictement.

Arnaud Bouchez · 17:38 UTC · voir le commit sur GitHub →

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.

Arnaud Bouchez · 14:07 UTC · voir le commit sur GitHub →

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.

Arnaud Bouchez · 08:44 UTC · voir le commit sur GitHub →

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.

Arnaud Bouchez · 12:44 UTC · voir le commit sur GitHub →

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é.

Arnaud Bouchez · 12:37 UTC · voir le commit sur GitHub →

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.

Arnaud Bouchez · 17:54 UTC · voir le commit sur GitHub →

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.

Arnaud Bouchez · 16:25 UTC · voir le commit sur GitHub →

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.

Arnaud Bouchez · 10:06 UTC · voir le commit sur GitHub →

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.

Arnaud Bouchez · 11:49 UTC · voir le commit sur GitHub →

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.

Arnaud Bouchez · 12:03 UTC · voir le commit sur GitHub →

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.

Arnaud Bouchez · 07:10 UTC · voir le commit sur GitHub →

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.

Arnaud Bouchez · 17:24 UTC · voir le commit sur GitHub →

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.

Arnaud Bouchez · 16:25 UTC · voir le commit sur GitHub →

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.

Arnaud Bouchez · 17:51 UTC · voir le commit sur GitHub →

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.

Arnaud Bouchez · 06:40 UTC · voir le commit sur GitHub →

Activité upstream commits par jour · 60 derniers jours
Commits977
Jours actifs44/60
Plus chargé2026-09-30
Pic60
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