A bit more support for IO phase names.
[rsync/rsync.git] / clientserver.c
index 2bab6aa..9cda2a0 100644 (file)
@@ -1,7 +1,7 @@
 /* -*- c-file-style: "linux"; -*-
    
    Copyright (C) 1998-2001 by Andrew Tridgell <tridge@samba.org>
-   Copyright (C) 2001 by Martin Pool <mbp@samba.org>
+   Copyright (C) 2001-2002 by Martin Pool <mbp@samba.org>
    
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -27,12 +27,16 @@ extern int read_only;
 extern int verbose;
 extern int rsync_port;
 char *auth_user;
-int sanitize_paths = 0;
+extern int sanitize_paths;
 
-/*
+/**
  * Run a client connected to an rsyncd.  The alternative to this
- * function for remote-shell connections is do_cmd.
- */
+ * function for remote-shell connections is do_cmd().
+ *
+ * After initial server startup, hands over to client_run().
+ *
+ * @return -1 for error in startup, or the result of client_run().
+ **/
 int start_socket_client(char *host, char *path, int argc, char *argv[])
 {
        int fd, i;
@@ -43,6 +47,7 @@ int start_socket_client(char *host, char *path, int argc, char *argv[])
        extern int remote_version;
        extern int am_sender;
        extern char *shell_cmd;
+       extern int list_only;
        extern int kludge_around_eof;
        extern char *bind_address;
        extern int default_af_hint;
@@ -80,6 +85,11 @@ int start_socket_client(char *host, char *path, int argc, char *argv[])
        if (!user) user = getenv("LOGNAME");
 
        if (verbose >= 2) {
+               /* FIXME: If we're going to use a socket program for
+                * testing, then this message is wrong.  We need to
+                * say something like "(except really using %s)" */
+               rprintf(FINFO, "opening tcp connection to %s port %d\n",
+                       host, rsync_port);
        }
        fd = open_socket_out_wrapped (host, rsync_port, bind_address,
                                      default_af_hint);
@@ -99,10 +109,14 @@ int start_socket_client(char *host, char *path, int argc, char *argv[])
        io_printf(fd,"@RSYNCD: %d\n", PROTOCOL_VERSION);
 
        if (!read_line(fd, line, sizeof(line)-1)) {
+               rprintf(FERROR, "rsync: did not see server greeting\n");
                return -1;
        }
 
        if (sscanf(line,"@RSYNCD: %d", &remote_version) != 1) {
+               /* note that read_line strips of \n or \r */
+               rprintf(FERROR, "rsync: server sent \"%s\" rather than greeting\n",
+                       line);
                return -1;
        }
 
@@ -113,10 +127,11 @@ int start_socket_client(char *host, char *path, int argc, char *argv[])
 
        /* Old servers may just drop the connection here,
         rather than sending a proper EXIT command.  Yuck. */
-       kludge_around_eof = remote_version < 25;
+       kludge_around_eof = list_only && (remote_version < 25);
 
        while (1) {
                if (!read_line(fd, line, sizeof(line)-1)) {
+                       rprintf(FERROR, "rsync: didn't get server startup line\n");
                        return -1;
                }