Artifact f0b3627056d2ac8e87275546a23227a3c94107a656c76fe09f686ee59809fd44:
- File
internal/sync/sparse_clone_carry.go
-
2026-10-28 13:40:20
— part of check-in
[624df80df2]
on branch perf/cone-clone-resend
— fix(sync): bound a clone cookie's parse and its runs' expansion
A request carries a cookie of any length, and splitting one on ':' or '.' before any bound allocated a string header per separator: 8 MB of dots cost hundreds of megabytes. cloneCapFields now refuses a cookie past maxCloneCookieBytes (64 KiB, well past the longest the server writes) before it splits, and splits with SplitN, as parseCloneRuns does.
A forged cookie could also name one deep chain maxCloneRuns times. The server now rebuilds each head once and at most maxCloneRunRIDs rids in all, newest runs first, and the cookie keeps the newest maxCloneRuns runs rather than the oldest, since an old run may never be reached.
A SHA3 artifact refused to an older peer was recorded as sent, and so carried in a run across rounds; it is now left out as a withheld tree is.
TestConeCloneSurvivesRedeltify re-deltifies a forwarded version against an unreached in-cone blob mid-clone and checks the clone ends whole; it fails with a phantom if the run's checksum is not checked. (user: [email protected], size: 5570) [annotate] [blame] [check-ins using]
-
2026-10-28 14:48:48
— part of check-in
[b85673a6cb]
on branch main
— Merge pull request #516 from danmestas/perf/cone-clone-resend
perf: carry a cone clone's forwarded delta chains across rounds (user: [email protected], size: 5570) [annotate] [blame] [check-ins using]
-
2026-10-28 13:40:20
— part of check-in
[624df80df2]
on branch perf/cone-clone-resend
— fix(sync): bound a clone cookie's parse and its runs' expansion