Add a little more protocol documentation.
[rsync/rsync.git] / csprotocol.txt
index 05b28c1..b41c20f 100644 (file)
@@ -3,6 +3,8 @@ basically a summary of clientserver.c and authenticate.c.
 
  -- Martin Pool <mbp@samba.org>
 
 
  -- Martin Pool <mbp@samba.org>
 
+$Id$
+
 
 
 
 
 
 
@@ -54,7 +56,19 @@ So if the client specifies a list of files to be included or excluded,
 they'll defer to existing limits specified in the server
 configuration.
 
 they'll defer to existing limits specified in the server
 configuration.
 
+At this point the client and server both switch to using a
+multiplexing layer across the socket.  The main point of this is to
+allow the server to asynchronously pass errors back, while still
+allowing streamed and pipelined data.
+
+Unfortunately, the multiplex protocol is not used at every stage.  We
+start up in plain socket mode and then change over by calling
+io_start_buffering.  Of course both the client and the server have to
+do this at the same point.
+
 The server then talks to the client as normal across the socket,
 passing checksums, file lists and so on.  For documentation of that,
 stay tuned (or write it yourself!).
 
 The server then talks to the client as normal across the socket,
 passing checksums, file lists and so on.  For documentation of that,
 stay tuned (or write it yourself!).
 
+
+