TapTap
09ab81120e
refactor(scanner): make cur_path const (cppcheck)
2026-09-24 02:45:33 +02:00
TapTap
2a7afbda0a
Merge branch 'quality/g325' into quality/refactor
2026-09-24 02:35:33 +02:00
TapTap
bab6fcc706
Merge branch 'quality/g324' into quality/refactor
2026-09-24 02:35:33 +02:00
TapTap
6a426cffa8
Merge branch 'quality/g323' into quality/refactor
2026-09-24 02:35:33 +02:00
TapTap
b74182c7c1
Merge branch 'quality/g322' into quality/refactor
2026-09-24 02:35:33 +02:00
TapTap
f2a8eeaea7
Merge branch 'quality/g321' into quality/refactor
2026-09-24 02:35:33 +02:00
TapTap
18d7d495cf
Merge branch 'quality/g319' into quality/refactor
2026-09-24 02:35:33 +02:00
TapTap
59d20e867a
refactor(scanner): share file-entry construction; name magic constants ( #322 , #326 )
2026-09-24 02:35:03 +02:00
TapTap
cc931790e9
feat(xattr): --fake-super for directories ( #319 )
2026-09-24 02:30:02 +02:00
TapTap
60776b78fc
refactor(server): decompose main into hash-credentials/stdio/daemon entrypoints ( #324 )
2026-09-24 02:29:17 +02:00
TapTap
52ad0aa512
refactor(delete): decompose delete_walk_fd and missing-args budget walker ( #325 )
2026-09-24 02:23:47 +02:00
TapTap
759ffea117
refactor(client): share connect/session setup and delete preamble ( #323 )
2026-09-24 02:23:21 +02:00
TapTap
ef37c2b988
refactor(incremental): decompose receive_delta_file with a fail label ( #321 )
2026-09-24 02:15:28 +02:00
TapTap
a14fbb2c10
Merge PR #328 : no-wire parity ( #317 , #318 )
CI / lint (push) Successful in 1m55s
CI / parity-fast (push) Skipped
CI / parity-full (push) Successful in 22s
CI / sanitizers (address) (push) Successful in 55s
CI / sanitizers (undefined) (push) Successful in 44s
CI / build-and-test (push) Successful in 1m17s
CI / fuzz-build (push) Successful in 52s
CI / coverage (push) Successful in 46s
CI / valgrind (push) Successful in 2m35s
2026-09-24 01:44:22 +02:00
TapTap
7408686370
test: fix cppcheck style findings in cycle-F tests
CI / lint (pull_request) Successful in 1m53s
CI / parity-full (pull_request) Skipped
CI / sanitizers (address) (pull_request) Skipped
CI / sanitizers (undefined) (pull_request) Skipped
CI / fuzz-build (pull_request) Skipped
CI / coverage (pull_request) Skipped
CI / valgrind (pull_request) Skipped
CI / parity-fast (pull_request) Successful in 17s
CI / build-and-test (pull_request) Successful in 54s
2026-09-24 01:38:56 +02:00
TapTap
90f2fb613f
Merge branch 'parity2/f2' into parity/no-wire
2026-09-24 01:25:41 +02:00
TapTap
8843f1e3cf
Merge branch 'parity2/f1' into parity/no-wire
2026-09-24 01:25:41 +02:00
TapTap
c387beb182
feat(transfer): stream single files and bases above the 256 MiB ceiling ( #318 )
2026-09-24 01:25:12 +02:00
TapTap
96e02f52c0
fix(delay-updates): unique staging dir and implied --delete-after ordering ( #317 )
2026-09-24 01:18:13 +02:00
TapTap
f7d5dda93b
Merge PR #327 : wire backlog (2.30.0)
CI / lint (push) Successful in 1m51s
CI / parity-fast (push) Skipped
CI / parity-full (push) Successful in 22s
CI / sanitizers (address) (push) Successful in 54s
CI / sanitizers (undefined) (push) Successful in 43s
CI / build-and-test (push) Successful in 1m18s
CI / fuzz-build (push) Successful in 50s
CI / coverage (push) Successful in 46s
CI / valgrind (push) Successful in 2m39s
2026-09-24 00:37:47 +02:00
TapTap
6d9cdb83ba
Merge branch 'wire/h2' into wire/backlog-230
CI / lint (pull_request) Successful in 1m50s
CI / parity-full (pull_request) Skipped
CI / sanitizers (address) (pull_request) Skipped
CI / sanitizers (undefined) (pull_request) Skipped
CI / fuzz-build (pull_request) Skipped
CI / coverage (pull_request) Skipped
CI / valgrind (pull_request) Skipped
CI / parity-fast (pull_request) Successful in 17s
CI / build-and-test (pull_request) Successful in 55s
2026-09-24 00:25:15 +02:00
TapTap
7c748f1f7a
Merge branch 'wire/h1' into wire/backlog-230
2026-09-24 00:25:15 +02:00
TapTap
884530c9a2
fix(filter): correct per-directory rule owner coordinate; post-clear ownership and bounds
2026-09-24 00:24:52 +02:00
TapTap
729f3ef8e1
fix(protocol): atomic client-msg flag, sanitize peer messages, flush before terminal, serialization probe
2026-09-23 23:56:31 +02:00
TapTap
b414f197af
feat(filter): per-directory merge rules at the receiver; implement e/n/w/- modifiers
2026-09-23 22:46:14 +02:00
TapTap
29f8be161c
feat(protocol): destination-state itemize for dirs/symlinks; --stats deleted breakdown
2026-09-23 21:52:40 +02:00
TapTap
cb2979fdf1
feat(protocol): client-message channel and rsync partial exit 23 (2.30.0)
2026-09-23 20:33:27 +02:00
TapTap
00197102bf
Release v2.29.0
...
CI / lint (push) Successful in 1m48s
CI / parity-fast (push) Skipped
CI / lint (pull_request) Successful in 1m48s
CI / parity-full (pull_request) Skipped
CI / sanitizers (address) (pull_request) Skipped
CI / sanitizers (undefined) (pull_request) Skipped
CI / fuzz-build (pull_request) Skipped
CI / coverage (pull_request) Skipped
CI / valgrind (pull_request) Skipped
CI / parity-full (push) Successful in 19s
CI / sanitizers (address) (push) Successful in 50s
CI / sanitizers (undefined) (push) Successful in 44s
CI / build-and-test (push) Successful in 1m19s
CI / coverage (push) Successful in 45s
CI / fuzz-build (push) Successful in 54s
CI / parity-fast (pull_request) Successful in 20s
CI / build-and-test (pull_request) Successful in 56s
CI / valgrind (push) Successful in 2m43s
- Transport I/O vtable over TCP/TLS; TLS multithreaded sendfile fixed
- Symlink-xattr wire block (protocol 2.29.0; config frame unchanged)
- No-wire parity burn-down: --inc-recursive, in-root --temp-dir,
--delete-before phase-0, rsync-interoperable --fake-super, --devices
per-entry failure, rsyncd.conf key subset (read-only default)
- Protocol version: 2.29.0
- Tested: unit, integration, ASan, UBSan, valgrind, differential parity
v2.29.0
2026-09-23 01:59:54 +02:00
TapTap
13b257d1dd
Merge PR #311 : transport I/O vtable + symlink-xattr wire block (2.29.0)
CI / lint (push) Successful in 1m48s
CI / parity-fast (push) Skipped
CI / parity-full (push) Successful in 20s
CI / sanitizers (address) (push) Successful in 54s
CI / sanitizers (undefined) (push) Successful in 45s
CI / build-and-test (push) Successful in 1m20s
CI / fuzz-build (push) Successful in 48s
CI / coverage (push) Successful in 46s
CI / valgrind (push) Successful in 2m35s
2026-09-23 01:50:51 +02:00
TapTap
f3d7672694
docs: bump release version to 2.29.0 and reconcile protocol docs
CI / lint (pull_request) Successful in 1m48s
CI / parity-full (pull_request) Skipped
CI / sanitizers (address) (pull_request) Skipped
CI / sanitizers (undefined) (pull_request) Skipped
CI / fuzz-build (pull_request) Skipped
CI / coverage (pull_request) Skipped
CI / valgrind (pull_request) Skipped
CI / parity-fast (pull_request) Successful in 20s
CI / build-and-test (pull_request) Successful in 57s
2026-09-23 01:45:30 +02:00
TapTap
18b821d32c
Merge branch 'feat/transport-g2' into feat/transport-xattr
2026-09-23 01:36:25 +02:00
TapTap
6ad065925f
Merge branch 'feat/transport-g1' into feat/transport-xattr
2026-09-23 01:36:25 +02:00
TapTap
46dcefe218
fix(protocol): classify TLS EOF before EINTR retry; harden current-ssl resolver; real TLS regression test
2026-09-23 01:36:08 +02:00
TapTap
b88acdbd3c
fix(xattr): whitelist path-based symlink apply; strengthen symlink xattr tests
2026-09-23 01:01:18 +02:00
TapTap
c29bce54fc
Merge branch 'feat/transport-c2' into feat/transport-xattr
2026-09-23 00:35:05 +02:00
TapTap
d98e971fcc
Merge branch 'feat/transport-c1' into feat/transport-xattr
2026-09-23 00:35:05 +02:00
TapTap
492ce0ce89
feat(xattr): carry and apply symlink xattrs (protocol 2.29.0)
2026-09-23 00:34:39 +02:00
TapTap
ec6692ac41
protocol: add transport I/O vtable over TCP/TLS primitives
...
Introduce ProtocolIoOps (send/recv/has_pending), selected once by
protocol_session_init() and protocol_session_set_ssl(), and dispatch the
send, receive and status-read loops through session->ops instead of
branching on session->ssl at runtime.
Each op performs one transfer attempt and classifies the result
(PROTOCOL_IO_RETRY/CLOSED/ERROR), preserving the WANT_READ/WANT_WRITE
wait_events switching, the SSL_ERROR_SYSCALL/EINTR retry, the
SSL_pending poll gating and the deadline handling. The raw read()/write()
fallback lives in the plaintext ops.
Add unit tests: a socketpair session with a counting ops wrapper proving
the loops dispatch through the vtable, and a worker-thread test that
protocol_current_ssl() resolves the bound session's SSL when io_ssl is NULL.
2026-09-23 00:18:36 +02:00
TapTap
1f8d60e30d
protocol: resolve TLS transport from the bound session, not thread-local io_ssl
...
file_send.c chose between sendfile() and the TLS-aware buffered path by
calling io_get_ssl(), which reads the thread-local io_ssl. A worker thread
that bound a TLS ProtocolSession via protocol_session_bind() never ran the
handshake in that thread, so io_ssl is NULL there and a TLS + --threads
transfer took the raw sendfile() path on an encrypted socket.
Add protocol_current_ssl(), which prefers the bound session's SSL and falls
back to io_ssl on the fd-shim path, and use it in file_send.c. Un-xfail
test_tls_with_multithreading.
2026-09-23 00:18:29 +02:00
TapTap
6db9827b87
Merge PR #310 : restore dumpable flag for ASan/LSan
CI / lint (push) Successful in 1m46s
CI / parity-fast (push) Skipped
CI / parity-full (push) Successful in 21s
CI / sanitizers (address) (push) Successful in 54s
CI / sanitizers (undefined) (push) Successful in 43s
CI / build-and-test (push) Successful in 1m22s
CI / fuzz-build (push) Successful in 48s
CI / coverage (push) Successful in 44s
CI / valgrind (push) Successful in 2m17s
2026-09-22 23:50:54 +02:00
TapTap
a07cc00bb0
test: restore dumpable flag after setuid drop so LSan can run under ASan
CI / lint (pull_request) Successful in 1m48s
CI / parity-full (pull_request) Skipped
CI / sanitizers (address) (pull_request) Skipped
CI / sanitizers (undefined) (pull_request) Skipped
CI / fuzz-build (pull_request) Skipped
CI / coverage (pull_request) Skipped
CI / valgrind (pull_request) Skipped
CI / parity-fast (pull_request) Successful in 18s
CI / build-and-test (pull_request) Successful in 55s
2026-09-22 23:45:41 +02:00
TapTap
3ae7685655
Merge PR #309 : parity burn-down
CI / lint (push) Successful in 1m46s
CI / parity-fast (push) Skipped
CI / parity-full (push) Successful in 22s
CI / sanitizers (address) (push) Failing after 54s
CI / sanitizers (undefined) (push) Successful in 43s
CI / build-and-test (push) Successful in 1m22s
CI / fuzz-build (push) Successful in 49s
CI / coverage (push) Successful in 44s
CI / valgrind (push) Successful in 2m19s
2026-09-22 23:33:21 +02:00
TapTap
4f945a8e39
docs: reconcile RSYNC_COMPAT for parity-next review follow-ups
CI / lint (pull_request) Successful in 1m46s
CI / parity-full (pull_request) Skipped
CI / sanitizers (address) (pull_request) Skipped
CI / sanitizers (undefined) (pull_request) Skipped
CI / fuzz-build (pull_request) Skipped
CI / coverage (pull_request) Skipped
CI / valgrind (pull_request) Skipped
CI / parity-fast (pull_request) Successful in 17s
CI / build-and-test (pull_request) Successful in 54s
2026-09-22 23:27:54 +02:00
TapTap
15f38f5b76
Merge branch 'feat/parity-f4' into feat/parity-next
2026-09-22 23:20:21 +02:00
TapTap
787967d3ce
Merge branch 'feat/parity-f2' into feat/parity-next
2026-09-22 23:20:21 +02:00
TapTap
06e7aef5c9
Merge branch 'feat/parity-f1' into feat/parity-next
2026-09-22 23:20:21 +02:00
TapTap
ee265d78ba
fix(delete-before): replay pre-scan list in --threads path
2026-09-22 23:19:55 +02:00
TapTap
47b1b9b915
fix(xattr): fake-super device round-trip, --devices continue-on-error, harden stat parse
2026-09-22 23:05:40 +02:00
TapTap
bb6c788cf9
fix(daemon): rsync read-only module default; warn on unenforced security keys
2026-09-22 22:53:23 +02:00
TapTap
0b40c47d6a
Merge branch 'feat/parity-b4' into feat/parity-next
...
# Conflicts:
# RSYNC_COMPAT.md
2026-09-22 22:08:16 +02:00