Fixed --dry-run with --read-batch:
authorWayne Davison <wayned@samba.org>
Sat, 4 Apr 2009 14:37:51 +0000 (07:37 -0700)
committerWayne Davison <wayned@samba.org>
Sat, 4 Apr 2009 14:38:37 +0000 (07:38 -0700)
- Avoid sending MSG_NO_SEND to the generator.
- Check if the file is wanted before discarding the batched data.

NEWS
receiver.c

diff --git a/NEWS b/NEWS
index f8ef1725034889fc240f0dbcb4a770901b428b4f..61bfbf10f0d94a18e97136e85b357803d0a78480 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -32,6 +32,8 @@ Changes since 3.0.5:
       receiving side when a mount-point directory did not match a directory in
       the transfer.
 
+    - Fixed the use of --dry-run with --read-batch.
+
     - Fixed configure's erroneous use of target.
 
     - Fixed configure's --disable-debug option.
index 1aba494c6440513d90d2289aa4ad62a154e67894..8cd8331f971e48c29512f52b1a503e9bef46e3b8 100644 (file)
@@ -360,7 +360,7 @@ static void no_batched_update(int ndx, BOOL is_redo)
        rprintf(FERROR_XFER, "(No batched update for%s \"%s\")\n",
                is_redo ? " resend of" : "", f_name(file, NULL));
 
-       if (inc_recurse)
+       if (inc_recurse && !dry_run)
                send_msg_int(MSG_NO_SEND, ndx);
 }
 
@@ -537,6 +537,21 @@ int recv_files(int f_in, char *local_name)
                        exit_cleanup(RERR_PROTOCOL);
                }
 
+               if (read_batch) {
+                       int wanted = redoing
+                                  ? we_want_redo(ndx)
+                                  : gen_wants_ndx(ndx);
+                       if (!wanted) {
+                               rprintf(FINFO,
+                                       "(Skipping batched update for%s \"%s\")\n",
+                                       redoing ? " resend of" : "",
+                                       fname);
+                               discard_receive_data(f_in, F_LENGTH(file));
+                               file->flags |= FLAG_FILE_SENT;
+                               continue;
+                       }
+               }
+
                if (!do_xfers) { /* log the transfer */
                        log_item(FCLIENT, file, &stats, iflags, NULL);
                        if (read_batch)
@@ -550,18 +565,6 @@ int recv_files(int f_in, char *local_name)
                        continue;
                }
 
-               if (read_batch) {
-                       if (!(redoing ? we_want_redo(ndx) : gen_wants_ndx(ndx))) {
-                               rprintf(FINFO,
-                                       "(Skipping batched update for%s \"%s\")\n",
-                                       redoing ? " resend of" : "",
-                                       fname);
-                               discard_receive_data(f_in, F_LENGTH(file));
-                               file->flags |= FLAG_FILE_SENT;
-                               continue;
-                       }
-               }
-
                partialptr = partial_dir ? partial_dir_fname(fname) : fname;
 
                if (protocol_version >= 29) {