X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/57edc4808f566fbaa58ec96bc7e543b1ccb92ab9..e2c1e482e004b8f992156bf436d4bf34cee1ee1d:/generator.c diff --git a/generator.c b/generator.c index d17e3b9e..b8d930e6 100644 --- a/generator.c +++ b/generator.c @@ -288,7 +288,7 @@ static void delete_in_dir(char *fbuf, struct file_struct *file, dev_t *fs_dev) if (allowed_lull) maybe_send_keepalive(time(NULL), MSK_ALLOW_FLUSH); - if (io_error && !ignore_errors) { + if (io_error & IOERR_GENERAL && !ignore_errors) { if (already_warned) return; rprintf(FINFO, @@ -549,8 +549,10 @@ void itemize(const char *fnamecmp, struct file_struct *file, int ndx, int statre #ifdef SUPPORT_XATTRS if (preserve_xattrs && do_xfers && iflags & (ITEM_REPORT_XATTR|ITEM_TRANSFER)) { - send_xattr_request(NULL, file, - iflags & ITEM_REPORT_XATTR ? sock_f_out : -1); + int fd = iflags & ITEM_REPORT_XATTR + && (protocol_version < 31 || !BITS_SET(iflags, ITEM_XNAME_FOLLOWS|ITEM_LOCAL_CHANGE)) + ? sock_f_out : -1; + send_xattr_request(NULL, file, fd); } #endif } else if (ndx >= 0) { @@ -1351,6 +1353,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, goto cleanup; } } + #ifdef SUPPORT_XATTRS if (preserve_xattrs && statret == 1) copy_xattrs(fnamecmpbuf, fname);