From 2c91d3d3110287ccc14a42031228cf3dca292fd3 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sun, 10 May 1998 03:08:22 +0000 Subject: [PATCH] better negotiation of protocol versions --- clientserver.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) 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"); -- 2.34.1