- stats.num_transferred_files++;
- stats.total_transferred_size += file->length;
-
- fname[0] = 0;
- if (file->basedir) {
- strlcpy(fname,file->basedir,MAXPATHLEN-1);
- if (strlen(fname) == MAXPATHLEN-1) {
- io_error = 1;
- rprintf(FERROR, "send_files failed on long-named directory %s\n",
- fname);
- return;
+#ifdef SUPPORT_XATTRS
+ if (preserve_xattrs && iflags & ITEM_REPORT_XATTR)
+ recv_xattr_request(file, f_in);
+#endif
+
+ if (!(iflags & ITEM_TRANSFER)) {
+ maybe_log_item(file, iflags, itemizing, xname);
+ write_ndx_and_attrs(f_out, ndx, iflags, fname, file,
+ fnamecmp_type, xname, xlen);
+ continue;
+ }
+ if (phase == 2) {
+ rprintf(FERROR,
+ "got transfer request in phase 2 [%s]\n",
+ who_am_i());
+ exit_cleanup(RERR_PROTOCOL);
+ }
+
+ if (file->flags & FLAG_FILE_SENT) {
+ if (csum_length == SHORT_SUM_LENGTH) {
+ /* For inplace: redo phase turns off the backup
+ * flag so that we do a regular inplace send. */
+ make_backups = -make_backups;
+ append_mode = -append_mode;
+ csum_length = SUM_LENGTH;
+ }
+ } else {
+ if (csum_length != SHORT_SUM_LENGTH) {
+ make_backups = -make_backups;
+ append_mode = -append_mode;
+ csum_length = SHORT_SUM_LENGTH;