Man page: Move the description of --info=progress2 to a better place.
[rsync/rsync.git] / csprotocol.txt
index bd81de1..c8dadd4 100644 (file)
@@ -3,21 +3,22 @@ basically a summary of clientserver.c and authenticate.c.
 
  -- Martin Pool <mbp@samba.org>
 
 
  -- Martin Pool <mbp@samba.org>
 
-$Id$
-
-
-
 
 This is the protocol used for rsync --daemon; i.e. connections to port
 873 rather than invocations over a remote shell.
 
 When the server accepts a connection, it prints a greeting
 
 
 This is the protocol used for rsync --daemon; i.e. connections to port
 873 rather than invocations over a remote shell.
 
 When the server accepts a connection, it prints a greeting
 
-  @RSYNCD: <version>
+  @RSYNCD: <version>.<subprotocol>
 
 
-where <version> is the numeric version; currently 24.  It follows this
-with a free text message-of-the-day.  It expects to see a similar
-greeting back from the client.
+where <version> is the numeric version (see PROTOCOL_VERSION in rsync.h)
+'.' is a literal period, and <subprotocol> is the numeric subprotocol
+version (see SUBPROTOCOL_VERSION -- it will be 0 for final releases).
+Protocols prior to 30 only output <version> alone.  The daemon expects
+to see a similar greeting back from the client.  For protocols prior to
+30, an absent ".<subprotocol>" value is assumed to be 0.  For protocol
+30, an absent value is a fatal error.  The daemon then follows this line
+with a free-format text message-of-the-day (if any is defined).
 
 The server is now in the connected state.  The client can either send
 the command
 
 The server is now in the connected state.  The client can either send
 the command
@@ -61,7 +62,27 @@ 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.
 
 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!).
 
+
+
+------------
+Protocol version changes
+
+30     (2007-10-04, 3.0.0pre1)
+
+       The use of a ".<subprotocol>" number was added to
+       @RSYNCD: <version>.<subprotocol>
+
+25     (2001-08-20, 2.4.7pre2) 
+
+       Send an explicit "@RSYNC EXIT" command at the end of the
+       module listing.  We never intentionally end the transmission
+       by just closing the socket anymore.