- The per-file checksum size is determined according
to an algorythm provided by Donovan Baarda which
reduces the probability of rsync algorithm
corrupting data and falling back using the whole md4
checksums.
default the config file to just "rsyncd.conf" in the current directory
instead of /etc/rsyncd.conf. Also, fix problems with logging messages when
running daemon mode over a remote shell program: it was pretty much doing
the opposite of what it should have, sending early error messages to the
log and later messages to the client. Switched it around so the very early
error messages go to the client and the later ones go to the log.
reduce symbol dependencies between files and therefore make it easier
to write unit tests. The diff is large, but the actual code changes
are pretty small.
connecting to old servers that don't have --no-whole-file.
Instead, we handle no_whole_file and whole_file separately, without
the magic -1 value. We don't modify no_whole_file after
initialization.
mode.
Also, drop -f and -F for batch mode: these should be reserved for
options that are more commonly used.
It also appends a newline to the argvs file and skips adding the
source directory to the command line.
send 64-bit ino_t and dev_t. We also need to try to use 64-bit
ino_t internally *even if* this platform does not have 64-bit
inums itself, because we need to find duplicate inums when
coming from a larger platform with --hardlinks.
problems with initialization.
Change the algorithm from trying to open an inbound socket with
getaddrinfo: keep trying suggested addresses until we find one on
which we can both get a socket and bind. Not convinced this is the
best, but it's probably better.
initalize the global_opts.af_hint to AF_INET or systems such as Linux that
have a native getaddrinfo() because they support IPv6 will attempt to
create IPv6 sockets. This brings up a problem with the new global_opts
structure; in order to initialize them to a value other than 0, we need to
explicitly initialize them all in an order that matches the order in
rsync.h. I think that's more inconvenient & error prone than keeping
global variables.
or literal IP addresses to rsync, and if your platform supports them
they will be used. Also there are -4 and -6 command-line options to
choose the default address type. Thankyou!