Matt McCutchen's Web Site
/
rsync
/
rsync.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Doc.
[rsync/rsync.git]
/
clientserver.c
diff --git
a/clientserver.c
b/clientserver.c
index
1cbabd3
..
40a4376
100644
(file)
--- a/
clientserver.c
+++ b/
clientserver.c
@@
-1,7
+1,7
@@
/* -*- c-file-style: "linux"; -*-
Copyright (C) 1998-2001 by Andrew Tridgell <tridge@samba.org>
/* -*- 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
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
@@
-29,10
+29,14
@@
extern int rsync_port;
char *auth_user;
int sanitize_paths = 0;
char *auth_user;
int sanitize_paths = 0;
-/*
+/*
*
* Run a client connected to an rsyncd. The alternative to this
* 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;
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 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;
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) {
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);
}
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)) {
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) {
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;
}
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. */
/* 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)) {
while (1) {
if (!read_line(fd, line, sizeof(line)-1)) {
+ rprintf(FERROR, "rsync: didn't get server startup line\n");
return -1;
}
return -1;
}
@@
-129,7
+144,10
@@
int start_socket_client(char *host, char *path, int argc, char *argv[])
if (strcmp(line,"@RSYNCD: EXIT") == 0) exit(0);
if (strcmp(line,"@RSYNCD: EXIT") == 0) exit(0);
- rprintf(FINFO,"%s\n", line);
+ if (strncmp(line, "@ERROR", 6) == 0)
+ rprintf(FERROR,"%s\n", line);
+ else
+ rprintf(FINFO,"%s\n", line);
}
kludge_around_eof = False;
}
kludge_around_eof = False;