X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/1b42f628f495ff0cdaa8a7c219d8ce33192281fe..c0dba635ba9d2cf29e39b9363cecc277974d62bb:/options.c diff --git a/options.c b/options.c index d8993c82..ff7c1431 100644 --- a/options.c +++ b/options.c @@ -1003,15 +1003,17 @@ int parse_arguments(int *argc_p, const char ***argv_p, int frommain) if (sanitize_paths) arg = sanitize_path(NULL, arg, NULL, 0, NULL); if (server_filter_list.head) { + int rej; char *cp = strdup(arg); if (!cp) out_of_memory("parse_arguments"); if (!*cp) goto options_rejected; clean_fname(cp, 1); - if (check_filter(&server_filter_list, cp, 0) < 0) - goto options_rejected; + rej = check_filter(&server_filter_list, cp, 0) < 0; free(cp); + if (rej) + goto options_rejected; } parse_filter_file(&filter_list, arg, opt == OPT_INCLUDE_FROM ? MATCHFLG_INCLUDE : 0, @@ -1978,7 +1980,8 @@ void server_options(char **args, int *argc_p) if (!relative_paths) args[ac++] = "--no-relative"; } - if (relative_paths && !implied_dirs && !am_sender) + /* It's OK that this checks the upper-bound of the protocol_version. */ + if (relative_paths && !implied_dirs && (!am_sender || protocol_version >= 30)) args[ac++] = "--no-implied-dirs"; if (fuzzy_basis && am_sender)