./configure (optional if already run)
make
+based-on: 181c9faf928faad08ef095f4667afe460ec3bef6
diff --git a/flist.c b/flist.c
--- a/flist.c
+++ b/flist.c
-@@ -1355,6 +1355,7 @@ static struct file_struct *send_file_name(int f, struct file_list *flist,
+@@ -1476,6 +1476,7 @@ static struct file_struct *send_file_name(int f, struct file_list *flist,
#endif
#ifdef SUPPORT_XATTRS
if (preserve_xattrs) {
+ sx.st.st_mode = file->mode;
- sx.xattr = NULL;
if (get_xattr(fname, &sx) < 0) {
io_error |= IOERR_GENERAL;
+ return NULL;
diff --git a/xattrs.c b/xattrs.c
--- a/xattrs.c
+++ b/xattrs.c
-@@ -281,6 +281,10 @@ int get_xattr(const char *fname, stat_x *sxp)
+@@ -284,6 +284,10 @@ int get_xattr(const char *fname, stat_x *sxp)
{
sxp->xattr = new(item_list);
*sxp->xattr = empty_xattr;
if (rsync_xal_get(fname, sxp->xattr) < 0) {
free_xattr(sxp);
return -1;
-@@ -864,6 +868,11 @@ int set_xattr(const char *fname, const struct file_struct *file,
+@@ -884,6 +888,11 @@ int set_xattr(const char *fname, const struct file_struct *file,
return -1;
}