diff options
author | Axel Duch <axel.duch@nginx.com> | 2020-07-04 03:24:07 +0100 |
---|---|---|
committer | Axel Duch <axel.duch@nginx.com> | 2020-07-04 03:24:07 +0100 |
commit | a9a21f6fe41f4da4c1dcf2d9b35287d67b1fa4d1 (patch) | |
tree | dec31a1e0b38f64fb266349fce4f2210394de4d9 /src/nxt_conf_validation.c | |
parent | 9bd6baefaee3a3e9b8dfe6427404512c9a66c969 (diff) | |
download | unit-a9a21f6fe41f4da4c1dcf2d9b35287d67b1fa4d1.tar.gz unit-a9a21f6fe41f4da4c1dcf2d9b35287d67b1fa4d1.tar.bz2 |
Router: route patterns multi wildcards support.
Diffstat (limited to 'src/nxt_conf_validation.c')
-rw-r--r-- | src/nxt_conf_validation.c | 44 |
1 files changed, 5 insertions, 39 deletions
diff --git a/src/nxt_conf_validation.c b/src/nxt_conf_validation.c index c4f78608..f34712bd 100644 --- a/src/nxt_conf_validation.c +++ b/src/nxt_conf_validation.c @@ -1346,15 +1346,8 @@ static nxt_int_t nxt_conf_vldt_match_pattern(nxt_conf_validation_t *vldt, nxt_conf_value_t *value) { - u_char ch; nxt_str_t pattern; - nxt_uint_t i, first, last; - - enum { - sw_none, - sw_side, - sw_middle - } state; + nxt_uint_t i, first; if (nxt_conf_type(value) != NXT_CONF_STRING) { return nxt_conf_vldt_error(vldt, "The \"match\" patterns for \"host\", " @@ -1368,38 +1361,11 @@ nxt_conf_vldt_match_pattern(nxt_conf_validation_t *vldt, } first = (pattern.start[0] == '!'); - last = pattern.length - 1; - state = sw_none; - - for (i = first; i != pattern.length; i++) { - - ch = pattern.start[i]; - - if (ch != '*') { - continue; - } - - switch (state) { - case sw_none: - state = (i == first) ? sw_side : sw_middle; - break; - - case sw_side: - if (i == last) { - if (last - first != 1) { - break; - } - - return nxt_conf_vldt_error(vldt, "The \"match\" pattern must " - "not contain double \"*\" markers."); - } - - /* Fall through. */ - case sw_middle: - return nxt_conf_vldt_error(vldt, "The \"match\" patterns can " - "either contain \"*\" markers at " - "the sides or only one in the middle."); + for (i = first; i < pattern.length; i++) { + if (pattern.start[i] == '*' && pattern.start[i + 1] == '*') { + return nxt_conf_vldt_error(vldt, "The \"match\" pattern must " + "not contain double \"*\" markers."); } } |