+To use this patch, run these commands for a successful build:
+
+ patch -p1 <patches/log-checksum.diff
+ ./configure (optional if already run)
+ make
+
+diff --git a/flist.c b/flist.c
+--- a/flist.c
++++ b/flist.c
+@@ -67,6 +67,7 @@ extern int protocol_version;
+ extern int sanitize_paths;
+ extern int munge_symlinks;
+ extern int need_unsorted_flist;
++extern int sender_keeps_checksum;
+ extern int unsort_ndx;
+ extern struct stats stats;
+ extern char *filesfrom_host;
+@@ -1187,6 +1188,12 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
+ extra_len += EXTRA_LEN;
+ #endif
+
++ if (always_checksum && am_sender && S_ISREG(st.st_mode)) {
++ file_checksum(thisname, tmp_sum, st.st_size);
++ if (sender_keeps_checksum)
++ extra_len += SUM_EXTRA_CNT * EXTRA_LEN;
++ }
++
+ #if EXTRA_ROUNDING > 0
+ if (extra_len & (EXTRA_ROUNDING * EXTRA_LEN))
+ extra_len = (extra_len | (EXTRA_ROUNDING * EXTRA_LEN)) + EXTRA_LEN;
+@@ -1250,9 +1257,6 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
+ memcpy(bp + basename_len, linkname, linkname_len);
+ #endif
+
+- if (always_checksum && am_sender && S_ISREG(st.st_mode))
+- file_checksum(thisname, tmp_sum, st.st_size);
+-
+ if (am_sender)
+ F_PATHNAME(file) = pathname;
+ else if (!pool)
+@@ -1283,6 +1287,9 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
+ return NULL;
+ }
+
++ if (sender_keeps_checksum && S_ISREG(st.st_mode))
++ memcpy(F_SUM(file), tmp_sum, checksum_len);
++
+ if (unsort_ndx)
+ F_NDX(file) = dir_count;
+