--- old/io.c 2006-04-21 09:40:19 -0700 +++ new/io.c 2006-05-18 10:45:16 -0700 @@ -273,10 +273,7 @@ static void read_msg_fd(void) exit_cleanup(RERR_STREAMIO); } read_loop(fd, buf, len); - if (defer_forwarding_messages) - msg_list_add(&msg2sndr, MSG_DELETED, buf, len); - else - io_multiplex_write(MSG_DELETED, buf, len); + send_msg(MSG_DELETED, buf, len); break; case MSG_SUCCESS: if (len != 4 || !am_generator) { @@ -286,10 +283,7 @@ static void read_msg_fd(void) read_loop(fd, buf, len); if (remove_sent_files) { decrement_active_files(IVAL(buf,0)); - if (defer_forwarding_messages) - msg_list_add(&msg2sndr, MSG_SUCCESS, buf, len); - else - io_multiplex_write(MSG_SUCCESS, buf, len); + send_msg(MSG_SUCCESS, buf, len); } if (preserve_hard_links) flist_ndx_push(&hlink_list, IVAL(buf,0)); @@ -309,10 +303,7 @@ static void read_msg_fd(void) if (n >= sizeof buf) n = sizeof buf - 1; read_loop(fd, buf, n); - if (am_generator && am_server && defer_forwarding_messages) - msg_list_add(&msg2sndr, tag, buf, n); - else - rwrite((enum logcode)tag, buf, n); + rwrite(tag, buf, n); len -= n; } break; @@ -386,14 +377,19 @@ static int msg2genr_flush(int flush_it_a return 1; } -void send_msg(enum msgcode code, char *buf, int len) +int send_msg(enum msgcode code, char *buf, int len) { if (msg_fd_out < 0) { - io_multiplex_write(code, buf, len); - return; + if (!defer_forwarding_messages) + return io_multiplex_write(code, buf, len); + if (!io_multiplexing_out) + return 0; + msg_list_add(&msg2sndr, code, buf, len); + return 1; } msg_list_add(&msg2genr, code, buf, len); msg2genr_flush(NORMAL_FLUSH); + return 1; } int get_redo_num(int itemizing, enum logcode code) --- old/log.c 2006-04-08 09:04:34 -0700 +++ new/log.c 2006-05-18 10:45:16 -0700 @@ -264,7 +264,7 @@ void rwrite(enum logcode code, char *buf if (am_server) { /* Pass the message to the non-server side. */ - if (io_multiplex_write((enum msgcode)code, buf, len)) + if (send_msg((enum msgcode)code, buf, len)) return; if (am_daemon) { /* TODO: can we send the error to the user somehow? */ --- old/proto.h 2006-04-22 08:38:34 -0700 +++ new/proto.h 2006-05-18 10:45:31 -0700 @@ -104,7 +104,7 @@ void set_msg_fd_in(int fd); void set_msg_fd_out(int fd); void increment_active_files(int ndx, int itemizing, enum logcode code); void decrement_active_files(int ndx); -void send_msg(enum msgcode code, char *buf, int len); +int send_msg(enum msgcode code, char *buf, int len); int get_redo_num(int itemizing, enum logcode code); int get_hlink_num(void); void io_set_filesfrom_fds(int f_in, int f_out);