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
Define NGROUPS if not already done.
[rsync/rsync.git]
/
clientserver.c
diff --git
a/clientserver.c
b/clientserver.c
index
1a638db
..
7e2ec16
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;
@@
-80,6
+84,9
@@
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);
}
rprintf(FINFO, "opening tcp connection to %s port %d\n",
host, rsync_port);
}
@@
-101,10
+108,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;
}
@@
-119,6
+130,7
@@
int start_socket_client(char *host, char *path, int argc, char *argv[])
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;
}
@@
-287,6
+299,7
@@
static int rsync_module(int fd, int i)
}
if (am_root) {
}
if (am_root) {
+#ifdef HAVE_SETGROUPS
/* Get rid of any supplementary groups this process
* might have inheristed. */
if (setgroups(0, NULL)) {
/* Get rid of any supplementary groups this process
* might have inheristed. */
if (setgroups(0, NULL)) {
@@
-294,6
+307,7
@@
static int rsync_module(int fd, int i)
io_printf(fd, "@ERROR: setgroups failed\n");
return -1;
}
io_printf(fd, "@ERROR: setgroups failed\n");
return -1;
}
+#endif
/* XXXX: You could argue that if the daemon is started
* by a non-root user and they explicitly specify a
/* XXXX: You could argue that if the daemon is started
* by a non-root user and they explicitly specify a