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
Fixed a problem with how the daemon filters deal with
[rsync/rsync.git]
/
clientserver.c
diff --git
a/clientserver.c
b/clientserver.c
index
93c90c6
..
f78c61c
100644
(file)
--- a/
clientserver.c
+++ b/
clientserver.c
@@
-121,8
+121,6
@@
int start_socket_client(char *host, int remote_argc, char *remote_argv[],
if (fd == -1)
exit_cleanup(RERR_SOCKETIO);
if (fd == -1)
exit_cleanup(RERR_SOCKETIO);
- set_socket_options(fd, sockopts);
-
#ifdef ICONV_CONST
setup_iconv();
#endif
#ifdef ICONV_CONST
setup_iconv();
#endif
@@
-509,15
+507,15
@@
static int rsync_module(int f_in, int f_out, int i, char *addr, char *host)
out_of_memory("rsync_module");
}
out_of_memory("rsync_module");
}
- /* We do a
push
_dir() that doesn't actually call chdir()
+ /* We do a
change
_dir() that doesn't actually call chdir()
* just to make a relative path absolute. */
strlcpy(line, curr_dir, sizeof line);
* just to make a relative path absolute. */
strlcpy(line, curr_dir, sizeof line);
- if (!
push_dir(module_dir, 1
))
+ if (!
change_dir(module_dir, CD_SKIP_CHDIR
))
goto chdir_failed;
if (strcmp(curr_dir, module_dir) != 0
&& (module_dir = strdup(curr_dir)) == NULL)
out_of_memory("rsync_module");
goto chdir_failed;
if (strcmp(curr_dir, module_dir) != 0
&& (module_dir = strdup(curr_dir)) == NULL)
out_of_memory("rsync_module");
-
push_dir(line, 1
); /* Restore curr_dir. */
+
change_dir(line, CD_SKIP_CHDIR
); /* Restore curr_dir. */
if (use_chroot) {
chroot_path = module_dir;
if (use_chroot) {
chroot_path = module_dir;
@@
-533,24
+531,24
@@
static int rsync_module(int f_in, int f_out, int i, char *addr, char *host)
p = lp_filter(i);
parse_rule(&daemon_filter_list, p, MATCHFLG_WORD_SPLIT,
p = lp_filter(i);
parse_rule(&daemon_filter_list, p, MATCHFLG_WORD_SPLIT,
- XFLG_ABS_IF_SLASH);
+ XFLG_ABS_IF_SLASH
| XFLG_DIR2WILD3
);
p = lp_include_from(i);
parse_filter_file(&daemon_filter_list, p, MATCHFLG_INCLUDE,
p = lp_include_from(i);
parse_filter_file(&daemon_filter_list, p, MATCHFLG_INCLUDE,
- XFLG_ABS_IF_SLASH | XFLG_OLD_PREFIXES | XFLG_FATAL_ERRORS);
+ XFLG_ABS_IF_SLASH | XFLG_
DIR2WILD3 | XFLG_
OLD_PREFIXES | XFLG_FATAL_ERRORS);
p = lp_include(i);
parse_rule(&daemon_filter_list, p,
MATCHFLG_INCLUDE | MATCHFLG_WORD_SPLIT,
p = lp_include(i);
parse_rule(&daemon_filter_list, p,
MATCHFLG_INCLUDE | MATCHFLG_WORD_SPLIT,
- XFLG_ABS_IF_SLASH | XFLG_OLD_PREFIXES);
+ XFLG_ABS_IF_SLASH | XFLG_
DIR2WILD3 | XFLG_
OLD_PREFIXES);
p = lp_exclude_from(i);
parse_filter_file(&daemon_filter_list, p, 0,
p = lp_exclude_from(i);
parse_filter_file(&daemon_filter_list, p, 0,
- XFLG_ABS_IF_SLASH | XFLG_OLD_PREFIXES | XFLG_FATAL_ERRORS);
+ XFLG_ABS_IF_SLASH | XFLG_
DIR2WILD3 | XFLG_
OLD_PREFIXES | XFLG_FATAL_ERRORS);
p = lp_exclude(i);
parse_rule(&daemon_filter_list, p, MATCHFLG_WORD_SPLIT,
p = lp_exclude(i);
parse_rule(&daemon_filter_list, p, MATCHFLG_WORD_SPLIT,
- XFLG_ABS_IF_SLASH | XFLG_OLD_PREFIXES);
+ XFLG_ABS_IF_SLASH | XFLG_
DIR2WILD3 | XFLG_
OLD_PREFIXES);
log_init(1);
log_init(1);
@@
-673,12
+671,12
@@
static int rsync_module(int f_in, int f_out, int i, char *addr, char *host)
io_printf(f_out, "@ERROR: chroot failed\n");
return -1;
}
io_printf(f_out, "@ERROR: chroot failed\n");
return -1;
}
- if (!
push_dir(module_dir, 0
))
+ if (!
change_dir(module_dir, CD_NORMAL
))
goto chdir_failed;
if (module_dirlen)
sanitize_paths = 1;
} else {
goto chdir_failed;
if (module_dirlen)
sanitize_paths = 1;
} else {
- if (!
push_dir(module_dir, 0
)) {
+ if (!
change_dir(module_dir, CD_NORMAL
)) {
chdir_failed:
rsyserr(FLOG, errno, "chdir %s failed\n", module_dir);
io_printf(f_out, "@ERROR: chdir failed\n");
chdir_failed:
rsyserr(FLOG, errno, "chdir %s failed\n", module_dir);
io_printf(f_out, "@ERROR: chdir failed\n");
@@
-931,10
+929,6
@@
int start_daemon(int f_in, int f_out)
if (!am_server) {
set_socket_options(f_in, "SO_KEEPALIVE");
if (!am_server) {
set_socket_options(f_in, "SO_KEEPALIVE");
- if (sockopts)
- set_socket_options(f_in, sockopts);
- else
- set_socket_options(f_in, lp_socket_options());
set_nonblocking(f_in);
}
set_nonblocking(f_in);
}