X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/84f69dad19e869eee500eb57665a9c8f5807efe2..0156c7842d413de7a6a6f3aae273c73f5d269662:/csprotocol.txt diff --git a/csprotocol.txt b/csprotocol.txt index 05b28c19..fc388202 100644 --- a/csprotocol.txt +++ b/csprotocol.txt @@ -3,6 +3,8 @@ basically a summary of clientserver.c and authenticate.c. -- Martin Pool +$Id$ + @@ -54,7 +56,27 @@ 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. +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!). + + +------------ +Protocol version changes + +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.