On Fri, Jun 30, 2000 at 07:13:13AM +1000, Kurt Andersen wrote:
> If it helps, based on discussions on the rsync mailing list,
> here is a hack that I put into the 2.4.3 source that gets
> around the problem. The method of detecting ssh is what I
> characterize as a hack...
>
> *** rsync-2.4.3/version.h.orig Sat Apr 8 19:53:55 2000
> --- rsync-2.4.3/version.h Thu Jun 29 14:03:34 2000
> ***************
> *** 1 ****
> ! #define VERSION "2.4.3"
> --- 1 ----
> ! #define VERSION "2.4.3-1"
> *** rsync-2.4.3/util.c.orig Sat Apr 8 19:53:31 2000
> --- rsync-2.4.3/util.c Thu Jun 29 14:03:27 2000
> ***************
> *** 116,121 ****
> --- 116,124 ----
> if (from_child_pipe[1] != STDOUT_FILENO) close(from_child_pipe[1]);
> umask(orig_umask);
> set_blocking(STDIN_FILENO);
> + if (! strstr(command[0],"ssh")) { /* doesn't include ssh */
> + set_blocking(STDOUT_FILENO);
> + }
> execvp(command[0], command);
> rprintf(FERROR,"Failed to exec %s : %s\n",
> command[0],strerror(errno));
Please test out Andrew's latest rsync in cvs. He added a --blocking-io
option which he turns on if the command equals RSYNC_RSH (which is the
default if you don't set -e) and otherwise it is assumed to be non-blocking;
this is the opposite default to what you used. I haven't had a chance to
test it out much yet myself.
See http://rsync.samba.org/cvs.html for instructions on using rsync's cvs.
- Dave Dykstra