Artifact f580a40a1567a607c7e13972e51cdac01eae4ec39bfca86acaf3ee68cb23c483:
- File
conformance/sync_gaps_test.go
-
2026-10-13 00:17:14
— part of check-in
[a67fe49556]
on branch main
— fix(sync): let Clone imply Read at the server's read gates (#312) (#363)
fossil's trunk page_xfer sets g.perm.Read for a requester with Clone, and the section 7.3 erratum states it for uvgimme. The handler treated only o, i and Admin as Read, so a Clone-only requester got no unversioned files, no xtable-hash inventory and no read-gated configuration.
This is an access change. handler.canRead, CanRead or a Clone held before any login (as page_xfer derives Read ahead of its card loop), now owns every read gate: the unversioned catalog for uv-hash and for a clone, uvigot and uvgimme answers, xtable-hash, and reqconfig. auth.CanRead is unchanged, and pull still needs o. The reqconfig interop test compares a Clone-only requester with fossil 2.28 given Read too, since the 2.28 binary predates the trunk change.
Pull still needs o although fossil trunk's derived Read lets a Clone-only nobody pull; that difference is deliberate. (user: [email protected], size: 1307) [annotate] [blame] [check-ins using]
-
2026-10-13 04:08:27
— part of check-in
[13e5e9d229]
on branch main
— fix(sync): answer a private gimme with igot HASH 1 for a recent peer (#375) (#383)
sync-protocol-01 Section 8.6: outside a private sync, a gimme for content held as private is answered with igot HASH 1 when the peer's date is 2020-04-13 or later, and with nothing for an earlier or unknown date. fossil's send_file decides it on remoteDate, which page_xfer reads from a client-version pragma carrying DATE and TIME.
The handler now records the peer's date from client-version and sends the private igot in place of the skipped file. (user: [email protected], size: 1307) [annotate] [blame] [check-ins using]
-
2026-10-13 00:17:14
— part of check-in
[a67fe49556]
on branch main
— fix(sync): let Clone imply Read at the server's read gates (#312) (#363)