added some really ugly code to allow errors to propogate to
[rsync/rsync.git] / clientserver.c
index bb367b0..8c55807 100644 (file)
@@ -101,7 +101,7 @@ int start_socket_client(char *host, char *path, int argc, char *argv[])
        }
        io_printf(fd,"\n");
 
-       if (remote_version > 17 && !am_sender)
+       if (remote_version >= 22 || (remote_version > 17 && !am_sender))
                io_start_multiplex_in(fd);
 
        return client_run(fd, fd, -1, argc, argv);
@@ -316,9 +316,17 @@ static int rsync_module(int fd, int i)
        argp = argv + optind;
        optind = 0;
 
-       if (remote_version > 17 && am_sender)
+       if (remote_version >= 22 || (remote_version > 17 && am_sender))
                io_start_multiplex_out(fd);
 
+       if (read_only) {
+               extern int am_sender;
+               if (!am_sender) {
+                       rprintf(FERROR,"ERROR: module is read only\n");
+                       return -1;
+               }
+       }
+
        if (!ret) {
                option_error();
        }