- Made start_socket_client() and start_inband_exchange() take a variable
number of remote args.
- We now exchange a "VERSION.SUBVERSION" value in the initial @RSYNCD
message. This is backward compatible with pre-protocol 30 rsyncs,
and fixes a problem where rsync daemons weren't checking if they were
speaking a compatible pre-release protocol.
- Moved the protocol-handling code (which was in two places) into a new
function: exchange_protocols().
- Protocol 30 now sends/receives the daemon args using NULLs as a separator
rather than a newline.
- Moved the arg-reading code into a new function in io.c: read_args().