enough to handle long-filename messages on a system that has a
really short MAXPATHLEN value. Also, make it large enough to
be able to comment on a MAXPATHLEN filename.
- Added hlink_list, a FIFO list of finished hard-link items.
- Made get_redo_num() check for finished hard-link items and
call the generator when they are found. This ensures that
we finish all the hard-link items by the time the MSG_DONE
is read and returned to the generator.
- Added get_hlink_num() to read the new hlink_list.
only needed back when the generator was reading a separate redo
pipe from the message pipe.
- Fixed a potential data corruption in the data that the generator
is sending: if a message comes in from the receiver, we now make
sure that we can't put the forwarding of this message to the sender
into the middle of a multiplexed-write record that the generator
is trying to flush.
at EOF -- it should be a rapidly arriving event, so only hang around
for 10 seconds, max., and then go ahead and report the "unexpectedly
closed" error.
us to ignore a timeout without turning off the timeout-related
time-keeping that the keep-alive processing needs.
- Added a new function: maybe_send_keepalive().
have it figure out if it should send the message to our sibling
or the other side.
- Handle the new MSG_DELETED message in both the generator and the
sender. This message is used to let the client side log each
deletion when the server side is the receiver.
set_msg_fd_in() and read_msg_fd() during the early phase of being
a client sender (up through the sending of the file list). This
makes sure that the sender monitors the socket from the receiver
for any messages that it might send to us, and thus avoids a hang
when verbosity is high.
- Output the who_am_i() information in the socket read/write errors to
make it a little clearer who is complaining about what (for those
familiar with rsync, at least -- e.g. it will help when users report
errors).
functions seemlessly work on fds that aren't for the main socket. This
involved changing some fd-variable names (to make them clearer), adding
io_set_sock_fds(), and making input buffering have a better enabled
flag (via an allocated buffer, just like the output buffering). I also
got rid of the fd arg to some functions where the fd arg could only
specify the input or output fd for the socket (which we already know).
in both the read and write code (also use a better variable name).
- Made the bytes-available code at the end of the select() loop use the
same flow of control in the read and the write code.
- Added a couple checks to ensure that the receiver doesn't mix two
clashing kinds of writes on the msg_fd_out pipe.
- Made sure that the read code in the receiver flushes the msg_fd_out
pipe, if needed.