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
Eliminate unneeded strlen after strlcpy.
[rsync/rsync.git]
/
clientserver.c
diff --git
a/clientserver.c
b/clientserver.c
index
7f85432
..
f38a495
100644
(file)
--- a/
clientserver.c
+++ b/
clientserver.c
@@
-34,6
+34,8
@@
extern int rsync_port;
char *auth_user;
extern int sanitize_paths;
extern int filesfrom_fd;
char *auth_user;
extern int sanitize_paths;
extern int filesfrom_fd;
+extern int remote_protocol;
+extern int protocol_version;
extern struct exclude_struct **server_exclude_list;
extern char *exclude_path_prefix;
extern struct exclude_struct **server_exclude_list;
extern char *exclude_path_prefix;
@@
-98,7
+100,6
@@
int start_inband_exchange(char *user, char *path, int f_in, int f_out, int argc)
int sargc = 0;
char line[MAXPATHLEN];
char *p;
int sargc = 0;
char line[MAXPATHLEN];
char *p;
- extern int remote_version;
extern int kludge_around_eof;
extern int am_sender;
extern int daemon_over_rsh;
extern int kludge_around_eof;
extern int am_sender;
extern int daemon_over_rsh;
@@
-128,19
+129,21
@@
int start_inband_exchange(char *user, char *path, int f_in, int f_out, int argc)
sargs[sargc] = NULL;
sargs[sargc] = NULL;
- io_printf(f_out, "@RSYNCD: %d\n",
PROTOCOL_VERSION
);
+ io_printf(f_out, "@RSYNCD: %d\n",
protocol_version
);
if (!read_line(f_in, line, sizeof(line)-1)) {
rprintf(FERROR, "rsync: did not see server greeting\n");
return -1;
}
if (!read_line(f_in, line, sizeof(line)-1)) {
rprintf(FERROR, "rsync: did not see server greeting\n");
return -1;
}
- if (sscanf(line,"@RSYNCD: %d", &remote_
version
) != 1) {
+ if (sscanf(line,"@RSYNCD: %d", &remote_
protocol
) != 1) {
/* note that read_line strips of \n or \r */
rprintf(FERROR, "rsync: server sent \"%s\" rather than greeting\n",
line);
return -1;
}
/* note that read_line strips of \n or \r */
rprintf(FERROR, "rsync: server sent \"%s\" rather than greeting\n",
line);
return -1;
}
+ if (protocol_version > remote_protocol)
+ protocol_version = remote_protocol;
p = strchr(path,'/');
if (p) *p = 0;
p = strchr(path,'/');
if (p) *p = 0;
@@
-149,7
+152,7
@@
int start_inband_exchange(char *user, char *path, int f_in, int f_out, int argc)
/* 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 = list_only && (
remote
_version < 25);
+ kludge_around_eof = list_only && (
protocol
_version < 25);
while (1) {
if (!read_line(f_in, line, sizeof(line)-1)) {
while (1) {
if (!read_line(f_in, line, sizeof(line)-1)) {
@@
-188,8
+191,8
@@
int start_inband_exchange(char *user, char *path, int f_in, int f_out, int argc)
}
io_printf(f_out, "\n");
}
io_printf(f_out, "\n");
- if (
remote
_version < 23) {
- if (
remote_version == 22 || (remote_version > 17 && !am_sender)
)
+ if (
protocol
_version < 23) {
+ if (
protocol_version == 22 || !am_sender
)
io_start_multiplex_in(f_in);
}
io_start_multiplex_in(f_in);
}
@@
-217,7
+220,6
@@
static int rsync_module(int f_in, int f_out, int i)
extern int am_sender;
extern int am_server;
extern int am_daemon;
extern int am_sender;
extern int am_server;
extern int am_daemon;
- extern int remote_version;
extern int am_root;
if (!allow_access(addr, host, lp_hosts_allow(i), lp_hosts_deny(i))) {
extern int am_root;
if (!allow_access(addr, host, lp_hosts_allow(i), lp_hosts_deny(i))) {
@@
-292,6
+294,8
@@
static int rsync_module(int f_in, int f_out, int i)
* supplementary groups. */
exclude_path_prefix = use_chroot? "" : lp_path(i);
* supplementary groups. */
exclude_path_prefix = use_chroot? "" : lp_path(i);
+ if (*exclude_path_prefix == '/' && !exclude_path_prefix[1])
+ exclude_path_prefix = "";
p = lp_include_from(i);
add_exclude_file(&server_exclude_list, p, MISSING_FATAL, ADD_INCLUDE);
p = lp_include_from(i);
add_exclude_file(&server_exclude_list, p, MISSING_FATAL, ADD_INCLUDE);
@@
-452,8
+456,8
@@
static int rsync_module(int f_in, int f_out, int i)
if (verbose > 1) verbose = 1;
#endif
if (verbose > 1) verbose = 1;
#endif
- if (
remote
_version < 23) {
- if (
remote_version == 22 || (remote_version > 17 && am_sender)
)
+ if (
protocol
_version < 23) {
+ if (
protocol_version == 22 || am_sender
)
io_start_multiplex_out(f_out);
}
io_start_multiplex_out(f_out);
}
@@
-486,13
+490,12
@@
static void send_listing(int fd)
{
int n = lp_numservices();
int i;
{
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));
for (i=0;i<n;i++)
if (lp_list(i))
io_printf(fd, "%-15s\t%s\n", lp_name(i), lp_comment(i));
- if (
remote
_version >= 25)
+ if (
protocol
_version >= 25)
io_printf(fd,"@RSYNCD: EXIT\n");
}
io_printf(fd,"@RSYNCD: EXIT\n");
}
@@
-505,7
+508,6
@@
int start_daemon(int f_in, int f_out)
char *motd;
int i = -1;
extern char *config_file;
char *motd;
int i = -1;
extern char *config_file;
- extern int remote_version;
extern int am_server;
if (!lp_load(config_file, 0)) {
extern int am_server;
if (!lp_load(config_file, 0)) {
@@
-520,7
+522,7
@@
int start_daemon(int f_in, int f_out)
set_nonblocking(f_in);
}
set_nonblocking(f_in);
}
- io_printf(f_out, "@RSYNCD: %d\n",
PROTOCOL_VERSION
);
+ io_printf(f_out, "@RSYNCD: %d\n",
protocol_version
);
motd = lp_motd_file();
if (motd && *motd) {
motd = lp_motd_file();
if (motd && *motd) {
@@
-540,10
+542,12
@@
int start_daemon(int f_in, int f_out)
return -1;
}
return -1;
}
- if (sscanf(line,"@RSYNCD: %d", &remote_
version
) != 1) {
+ if (sscanf(line,"@RSYNCD: %d", &remote_
protocol
) != 1) {
io_printf(f_out, "@ERROR: protocol startup error\n");
return -1;
}
io_printf(f_out, "@ERROR: protocol startup error\n");
return -1;
}
+ if (protocol_version > remote_protocol)
+ protocol_version = remote_protocol;
while (i == -1) {
line[0] = 0;
while (i == -1) {
line[0] = 0;