[SCM] The rsync repository. - branch master updated

Rsync CVS commit messages rsync-cvs at lists.samba.org
Sun Sep 11 12:09:09 MDT 2011


The branch, master has been updated
       via  de407c0 Fix a potential hang on an empty file list. Fixes bug 8423.
       via  c1005fb Document --msgs2stderr.
      from  70c4bfb Error out if --password-file specifed and it fails. Fixes bug 8440.

;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit de407c03d2f424829fc1af3db3260286788bd619
Author: Wayne Davison <wayned at samba.org>
Date:   Sun Sep 11 11:07:02 2011 -0700

    Fix a potential hang on an empty file list.
    Fixes bug 8423.

commit c1005fb256ecd764caf23f54080ffbcf550b78f2
Author: Wayne Davison <wayned at samba.org>
Date:   Sun Sep 11 11:01:04 2011 -0700

    Document --msgs2stderr.

-----------------------------------------------------------------------

Summary of changes:
 io.c      |    3 +++
 main.c    |    6 +++++-
 options.c |    1 +
 rsync.yo  |   11 +++++++++++
 4 files changed, 20 insertions(+), 1 deletions(-)


Changeset truncated at 500 lines:

diff --git a/io.c b/io.c
index 7cb3be1..b4e0a68 100644
--- a/io.c
+++ b/io.c
@@ -912,6 +912,9 @@ void noop_io_until_death(void)
 {
 	char buf[1024];
 
+	if (!iobuf.in.buf || !iobuf.out.buf || iobuf.in_fd == -1 || iobuf.out_fd == -1)
+		return;
+
 	kluge_around_eof = 2;
 	/* Setting an I/O timeout ensures that if something inexplicably weird
 	 * happens, we won't hang around forever. */
diff --git a/main.c b/main.c
index 5a06f17..c5e106c 100644
--- a/main.c
+++ b/main.c
@@ -809,8 +809,12 @@ static void do_server_sender(int f_in, int f_out, int argc, char *argv[])
 	}
 
 	flist = send_file_list(f_out,argc,argv);
-	if (!flist || flist->used == 0)
+	if (!flist || flist->used == 0) {
+		/* Make sure input buffering is off so we can't hang in noop_io_until_death(). */
+		io_end_buffering_in(0);
+		/* TODO:  we should really exit in a more controlled manner. */
 		exit_cleanup(0);
+	}
 
 	io_start_buffering_in(f_in);
 
diff --git a/options.c b/options.c
index 6ba6669..70905b8 100644
--- a/options.c
+++ b/options.c
@@ -665,6 +665,7 @@ void usage(enum logcode F)
   rprintf(F," -v, --verbose               increase verbosity\n");
   rprintf(F,"     --info=FLAGS            fine-grained informational verbosity\n");
   rprintf(F,"     --debug=FLAGS           fine-grained debug verbosity\n");
+  rprintf(F,"     --msgs2stderr           special output handling for debugging\n");
   rprintf(F," -q, --quiet                 suppress non-error messages\n");
   rprintf(F,"     --no-motd               suppress daemon-mode MOTD (see manpage caveat)\n");
   rprintf(F," -c, --checksum              skip based on checksum, not mod-time & size\n");
diff --git a/rsync.yo b/rsync.yo
index 96e2634..7cf3a80 100644
--- a/rsync.yo
+++ b/rsync.yo
@@ -320,6 +320,7 @@ to the detailed description below for a complete description.  verb(
  -v, --verbose               increase verbosity
      --info=FLAGS            fine-grained informational verbosity
      --debug=FLAGS           fine-grained debug verbosity
+     --msgs2stderr           special output handling for debugging
  -q, --quiet                 suppress non-error messages
      --no-motd               suppress daemon-mode MOTD (see caveat)
  -c, --checksum              skip based on checksum, not mod-time & size
@@ -538,6 +539,16 @@ This option was added to 3.1.0, so an older rsync on the server side might
 reject your attempts at fine-grained control (if one or more flags needed
 to be send to the server and the server was too old to understand them).
 
+dit(bf(--msgs2stderr)) This option changes rsync to send all its output
+directly to stderr rather than to send messages to the client side via the
+protocol (which normally outputs info messages via stdout).  This is mainly
+intended for debugging in order to avoid changing the data sent via the
+protocol, since the extra protocol data can change what is being tested.
+Keep in mind that a daemon connection does not have a stderr channel to send
+messages back to the client side, so if you are doing any daemon-transfer
+debugging using this option, you should start up a daemon using bf(--no-detach)
+so that you can see the stderr output on the daemon side.
+
 dit(bf(-q, --quiet)) This option decreases the amount of information you
 are given during the transfer, notably suppressing information messages
 from the remote server. This option name is useful when invoking rsync from


-- 
The rsync repository.


More information about the rsync-cvs mailing list