From: Andrew Tridgell Date: Sun, 10 May 1998 03:08:22 +0000 (+0000) Subject: better negotiation of protocol versions X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/commitdiff_plain/2c91d3d3110287ccc14a42031228cf3dca292fd3 better negotiation of protocol versions --- diff --git a/clientserver.c b/clientserver.c index 6d6e01d6..b07654fa 100644 --- a/clientserver.c +++ b/clientserver.c @@ -48,11 +48,6 @@ int start_socket_client(char *host, char *path, int argc, char *argv[]) sargs[sargc] = NULL; - p = strchr(path,'/'); - if (p) *p = 0; - io_printf(fd,"%s\n",path); - if (p) *p = '/'; - if (!read_line(fd, line, sizeof(line)-1)) { return -1; } @@ -61,6 +56,13 @@ int start_socket_client(char *host, char *path, int argc, char *argv[]) return -1; } + io_printf(fd,"@RSYNCD: %d\n", PROTOCOL_VERSION); + + p = strchr(path,'/'); + if (p) *p = 0; + io_printf(fd,"%s\n",path); + if (p) *p = '/'; + while (1) { if (!read_line(fd, line, sizeof(line)-1)) { return -1; @@ -175,11 +177,20 @@ static int start_daemon(int fd) { char line[1024]; char *motd; + int version; set_socket_options(fd,"SO_KEEPALIVE"); io_printf(fd,"@RSYNCD: %d\n", PROTOCOL_VERSION); + if (!read_line(fd, line, sizeof(line)-1)) { + return -1; + } + + if (sscanf(line,"@RSYNCD: %d", &version) != 1) { + return -1; + } + motd = lp_motd_file(); if (*motd) { FILE *f = fopen(motd,"r");