batch-mode fixes [was: [PATCH] fix read-batch SEGFAULT]

Chris Shoemaker chris.shoemaker at cox.net
Fri May 7 22:54:32 GMT 2004


On Fri, May 07, 2004 at 02:29:12AM -0400, Chris Shoemaker wrote:
> > Status update: I've just finished tracing through the client behavior
> > related to the apparent hang.  All seems to go well with client/server
> > negotiation, until the client tries to receive the file list (calling
> > recv_file_list).  This just times out, recalling select() every 60
> > seconds.  I'm guessing that the server just isn't sending the file list 
> > at the right time (or at all).  Strange, that this only happens with 
> > --write-batch.  I would think that protocol should be pretty much 
> > unaffected by batch-mode, since any conflicting options would already 
> > have been complained about.
> > 
> > I think I'll have to setup an rsync server and trace it during a 
> > --write-batch connection to find the problem.... maybe tomorrow night...
> 
> Initial examination makes a suspect of the batch-mode handling of 
> exclude lists.... 
> 

  Indeed, the basic problem is that the server waits to read the 
exclude list at the same the the client waits to read the file 
list.  They both go nowhere.

  I am still confused by several sections of code -- conditional
statements that determine whether or not the exclude list is to be
sent/received.  There seems to be some subtle interaction with --delete
and --delete-exclude, too.  IMHO, whether or not to communicate the
exclude list is too important a part of the protocol to be unclear.  I
recommend collecting in one place the complete conditional, so that
client and server can easily agree on whether or not to send/receive the
exclude list.

  As it is, I'm not sure if exclude lists are supposed to be mutually
exclusive with batch-mode or not.  Currently, I'm proceeding with the
assumption that they don't need to be exclusive.  So, I went:

/* if (!write_batch) */
   send_exclude_list(f_out);

at main.c:641.

  This seems to work better, because things get further.  The exclude
list is sent (empty, I guess) and the file list is sent and received.

  Things still don't complete, though.  Now, I'm getting permission
denied errors when opening the file pfx.rsync_flist.  I'm not sure why. 
I know that the client has setuid(nobody), but even when the current
directory is mode 777, permission is denied.  Perhaps there's a chroot
somewhere.... 

  -Chris



More information about the rsync mailing list