-- if (always_checksum && am_sender && S_ISREG(st.st_mode))
-+ if (always_checksum && am_sender && S_ISREG(st.st_mode)
-+ && !get_sum_xattr(thisname, &st, tmp_sum))
- file_checksum(thisname, tmp_sum, st.st_size);
-
- F_PATHNAME(file) = pathname;
---- old/generator.c
-+++ new/generator.c
-@@ -627,7 +627,8 @@ int unchanged_file(char *fn, struct file
+ if (always_checksum && am_sender && S_ISREG(st.st_mode)) {
+- file_checksum(thisname, tmp_sum, st.st_size);
++ if (!get_sum_xattr(thisname, &st, tmp_sum))
++ file_checksum(thisname, tmp_sum, st.st_size);
+ if (sender_keeps_checksum)
+ extra_len += SUM_EXTRA_CNT * EXTRA_LEN;
+ }
+diff --git a/generator.c b/generator.c
+--- a/generator.c
++++ b/generator.c
+@@ -530,7 +530,8 @@ int unchanged_file(char *fn, struct file_struct *file, STRUCT_STAT *st)