Behavior-preserving refactors plus the --fake-super-for-directories feature. No wire change (PROTOCOL_VERSION stays 2.30.0).
#319--fake-super now records/restores a directory's stat via user.rsync.%stat (permission bits on disk, never real-chown), rsync-interoperable.
#321receive_delta_file decomposed into a dispatcher + receive_delta_data_branch/receive_next_branch with a NULL-guarded fail: label (282 → 43 lines).
#322 shared scanner_build_file_entry() for the sequential and parallel scanners; scan_root_entry split per node kind with a single goto done.
#323 one client_connect_and_bind_session() + client_prepare_files_from() replacing three copy-pasted session-setup blocks and the duplicated files-from preamble.
#324server.cmain() (265 → 27 lines) decomposed into configure/hash-credentials/stdio/daemon entrypoints.
#325delete_walk_fd split into child-walk/pass helpers; delete_missing_args_budgeted_observed split into delete_one_missing_arg/delete_nonempty_missing_dir.
#326 named IDENTITY_MAX_NAME_LEN, SCANNER_RESULT_QUEUE_CAP, SERVER_DEFAULT_MAX_CONNECTIONS.
Review follow-ups (fixed before merge)
Two reviews found: a critical parallel-scanner error-propagation bug (scan_root_add_non_dir did not mark the scan failed on real builder failures, silently dropping an entry and reporting success), a link_target leak on pruned root symlinks, a removed delta basis guard, and a pre-existing meta leak in --append resume on error paths. All fixed.
## Quality cycle — closes #319, #321, #322, #323, #324, #325, #326
Behavior-preserving refactors plus the `--fake-super`-for-directories feature. No wire change (`PROTOCOL_VERSION` stays 2.30.0).
- **#319** `--fake-super` now records/restores a directory's stat via `user.rsync.%stat` (permission bits on disk, never real-chown), rsync-interoperable.
- **#321** `receive_delta_file` decomposed into a dispatcher + `receive_delta_data_branch`/`receive_next_branch` with a NULL-guarded `fail:` label (282 → 43 lines).
- **#322** shared `scanner_build_file_entry()` for the sequential and parallel scanners; `scan_root_entry` split per node kind with a single `goto done`.
- **#323** one `client_connect_and_bind_session()` + `client_prepare_files_from()` replacing three copy-pasted session-setup blocks and the duplicated files-from preamble.
- **#324** `server.c` `main()` (265 → 27 lines) decomposed into configure/hash-credentials/stdio/daemon entrypoints.
- **#325** `delete_walk_fd` split into child-walk/pass helpers; `delete_missing_args_budgeted_observed` split into `delete_one_missing_arg`/`delete_nonempty_missing_dir`.
- **#326** named `IDENTITY_MAX_NAME_LEN`, `SCANNER_RESULT_QUEUE_CAP`, `SERVER_DEFAULT_MAX_CONNECTIONS`.
### Review follow-ups (fixed before merge)
Two reviews found: a critical parallel-scanner error-propagation bug (`scan_root_add_non_dir` did not mark the scan failed on real builder failures, silently dropping an entry and reporting success), a `link_target` leak on pruned root symlinks, a removed delta basis guard, and a pre-existing `meta` leak in `--append` resume on error paths. All fixed.
### Verification
Strict `-Werror`, clang-format 18, cppcheck clean; unit 45/45 (ASan with leak detection, UBSan, valgrind); integration **945 passed**; differential parity **84 passed**.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Quality cycle — closes #319, #321, #322, #323, #324, #325, #326
Behavior-preserving refactors plus the
--fake-super-for-directories feature. No wire change (PROTOCOL_VERSIONstays 2.30.0).--fake-supernow records/restores a directory's stat viauser.rsync.%stat(permission bits on disk, never real-chown), rsync-interoperable.receive_delta_filedecomposed into a dispatcher +receive_delta_data_branch/receive_next_branchwith a NULL-guardedfail:label (282 → 43 lines).scanner_build_file_entry()for the sequential and parallel scanners;scan_root_entrysplit per node kind with a singlegoto done.client_connect_and_bind_session()+client_prepare_files_from()replacing three copy-pasted session-setup blocks and the duplicated files-from preamble.server.cmain()(265 → 27 lines) decomposed into configure/hash-credentials/stdio/daemon entrypoints.delete_walk_fdsplit into child-walk/pass helpers;delete_missing_args_budgeted_observedsplit intodelete_one_missing_arg/delete_nonempty_missing_dir.IDENTITY_MAX_NAME_LEN,SCANNER_RESULT_QUEUE_CAP,SERVER_DEFAULT_MAX_CONNECTIONS.Review follow-ups (fixed before merge)
Two reviews found: a critical parallel-scanner error-propagation bug (
scan_root_add_non_dirdid not mark the scan failed on real builder failures, silently dropping an entry and reporting success), alink_targetleak on pruned root symlinks, a removed delta basis guard, and a pre-existingmetaleak in--appendresume on error paths. All fixed.Verification
Strict
-Werror, clang-format 18, cppcheck clean; unit 45/45 (ASan with leak detection, UBSan, valgrind); integration 945 passed; differential parity 84 passed.