fixed typo in socket test
[rsync/rsync.git] / clientserver.c
index 6d6e01d..38bb171 100644 (file)
@@ -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;
@@ -158,6 +160,8 @@ static int rsync_module(int fd, int i)
        return 0;
 }
 
+/* send a list of available modules to the client. Don't list those
+   with "list = False". */
 static void send_listing(int fd)
 {
        int n = lp_numservices();
@@ -173,13 +177,22 @@ static void send_listing(int fd)
    here */
 static int start_daemon(int fd)
 {
-       char line[1024];
+       char line[200];
        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");
@@ -194,7 +207,6 @@ static int start_daemon(int fd)
                io_printf(fd,"\n");
        }
 
-       /* read a single line indicating the resource that is wanted */
        while (1) {
                int i;
 
@@ -229,7 +241,9 @@ static int start_daemon(int fd)
 
 int daemon_main(void)
 {
-       if (!lp_load(RSYNCD_CONF)) {
+       extern char *config_file;
+
+       if (!lp_load(config_file)) {
                exit_cleanup(1);
        }