summaryrefslogtreecommitdiff
path: root/compat.c
diff options
context:
space:
mode:
authorWayne Davison <wayne@opencoder.net>2020-06-23 19:14:11 -0700
committerWayne Davison <wayne@opencoder.net>2020-06-23 19:20:01 -0700
commitf157ff3b3a306153d79d00e9367059c0d1c91ef9 (patch)
tree6ad610172a2d8f13abda01354f10b384ba4d0288 /compat.c
parentd15cfef9353099f8c5ec81283c1d58ae181ae29b (diff)
downloadrsync-f157ff3b3a306153d79d00e9367059c0d1c91ef9.tar.gz
Avoid negotiating a "none" choice by default
The client does not pass "none" as a negotiation choice unless it's from the user's environment list. The server still passes the "none" value to the client unless its environment var excludes it.
Diffstat (limited to 'compat.c')
-rw-r--r--compat.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/compat.c b/compat.c
index 4f225f29..074a86ab 100644
--- a/compat.c
+++ b/compat.c
@@ -379,7 +379,8 @@ void validate_choice_vs_env(int num1, int num2)
/* The saw buffer is initialized and used to store ordinal values from 1 to N
* for the order of the args in the array. If dup_markup == '\0', duplicates
* are removed otherwise the char is prefixed to the duplicate term and, if it
- * is an opening paren/bracket/brace, the matching closing char is suffixed. */
+ * is an opening paren/bracket/brace, the matching closing char is suffixed.
+ * "none" is removed on the client side unless dup_markup != '\0'. */
int get_default_nno_list(struct name_num_obj *nno, char *to_buf, int to_buf_len, char dup_markup)
{
struct name_num_item *nni;
@@ -401,6 +402,8 @@ int get_default_nno_list(struct name_num_obj *nno, char *to_buf, int to_buf_len,
continue;
delim = dup_markup;
}
+ if (nni->num == 0 && !am_server && !dup_markup)
+ continue;
if (len)
to_buf[len++]= ' ';
if (delim) {