Since rsync 3.x, any daemon-excluded file is reported as error 23 (incomplete transfer). This is incorrect and unlike the behaviour in previous versions. If files are explicitly excluded by server config, then this is normal behaviour for rsync to skip them.
The attached patch fixes this:
--- generator.c.old 2008-05-31 00:35:33.000000000 -0400
+++ generator.c 2008-05-31 00:35:55.000000000 -0400
@@ -1292,7 +1292,7 @@
handle_skipped_hlink(file, itemizing, code, f_out);
"skipping daemon-excluded %s \"%s\"\n",
is_dir ? "directory" : "file", fname);
No, it was the pre-3.0.0 behavior that was incorrect. When a client tries to push a file but is prevented from doing so by a daemon exclude, rsync has done a transfer that is incorrect from the client's perspective, so it must issue error 23. To avoid the error, exclude the files on the client.