int ignore_timeout = 0;
int batch_fd = -1;
int msgdone_cnt = 0;
+int check_for_io_err = 0;
/* Ignore an EOF error if non-zero. See whine_about_eof(). */
int kluge_around_eof = 0;
len = tag & 0xFFFFFF;
tag = (tag >> 24) - MPLEX_BASE;
+ check_for_io_err = 0;
+
switch (tag) {
case MSG_DONE:
if (len < 0 || len > 1 || !am_generator) {
}
flist = recv_file_list(fd);
flist->parent_ndx = IVAL(buf,0);
+ /* If the sender is going to send us an MSG_IO_ERROR value, it
+ * will always be the very next message following MSG_FLIST. */
+ check_for_io_err = 1;
#ifdef SUPPORT_HARD_LINKS
if (preserve_hard_links)
match_hard_links(flist);
got_flist_entry_status(FES_NO_SEND, buf);
break;
case MSG_ERROR_SOCKET:
+ case MSG_ERROR_UTF8:
case MSG_CLIENT:
if (!am_generator)
goto invalid_msg;
xbuf outbuf, inbuf;
INIT_XBUF(outbuf, buffer + 4, 0, sizeof buffer - 4);
- INIT_XBUF(inbuf, (char*)buf, len, -1);
+ INIT_XBUF(inbuf, (char*)buf, len, (size_t)-1);
iconvbufs(ic_send, &inbuf, &outbuf,
ICB_INCLUDE_BAD | ICB_INCLUDE_INCOMPLETE);
msg_bytes = tag & 0xFFFFFF;
tag = (tag >> 24) - MPLEX_BASE;
+ check_for_io_err = 0;
+
switch (tag) {
case MSG_DATA:
if (msg_bytes > iobuf_in_siz) {
int add_null = 0;
INIT_CONST_XBUF(outbuf, line);
- INIT_XBUF(inbuf, ibuf, 0, -1);
+ INIT_XBUF(inbuf, ibuf, 0, (size_t)-1);
while (msg_bytes) {
inbuf.len = msg_bytes > sizeof ibuf