Merge in the LIBSMB_PROG idea from samba, so that you can do
[rsync/rsync.git] / clientserver.c
index 82c25de..7dd72e9 100644 (file)
@@ -78,7 +78,7 @@ int start_socket_client(char *host, char *path, int argc, char *argv[])
        if (!user) user = getenv("USER");
        if (!user) user = getenv("LOGNAME");
 
-       fd = open_socket_out(host, rsync_port, &socket_address);
+       fd = open_socket_out_wrapped (host, rsync_port, &socket_address);
        if (fd == -1) {
                exit_cleanup(RERR_SOCKETIO);
        }
@@ -107,11 +107,11 @@ int start_socket_client(char *host, char *path, int argc, char *argv[])
        io_printf(fd,"%s\n",path);
        if (p) *p = '/';
 
-       while (1) {
-               /* Old servers may just drop the connection here,
-                  rather than sending a proper EXIT command.  Yuck. */
-               kludge_around_eof= True;
+       /* Old servers may just drop the connection here,
+        rather than sending a proper EXIT command.  Yuck. */
+       kludge_around_eof = remote_version < 25;
 
+       while (1) {
                if (!read_line(fd, line, sizeof(line)-1)) {
                        return -1;
                }
@@ -386,12 +386,14 @@ static void send_listing(int fd)
 {
        int n = lp_numservices();
        int i;
-       
+       extern int remote_version;
+
        for (i=0;i<n;i++)
                if (lp_list(i))
                    io_printf(fd, "%-15s\t%s\n", lp_name(i), lp_comment(i));
 
-       io_printf(fd, "@RSYNCD: EXIT\n");
+       if (remote_version >= 25)
+               io_printf(fd,"@RSYNCD: EXIT\n");
 }
 
 /* this is called when a socket connection is established to a client