diff --git a/src/lib-sieve/plugins/regex/ext-regex.c b/src/lib-sieve/plugins/regex/ext-regex.c index b5270c3a16c4b9920c993a42c5e826c412a5c235..a6824fab3a679aea1163f2d0b41867ec4f869287 100644 --- a/src/lib-sieve/plugins/regex/ext-regex.c +++ b/src/lib-sieve/plugins/regex/ext-regex.c @@ -174,9 +174,9 @@ bool mtch_regex_validate_context if ( !mtch_regex_validate_regexp(validator, ctx, key_arg, cflags) ) return FALSE; - } else if ( sieve_ast_argument_type(arg) == SAAT_STRING_LIST ) { + } else if ( sieve_ast_argument_type(key_arg) == SAAT_STRING_LIST ) { /* String list */ - struct sieve_ast_argument *stritem = sieve_ast_strlist_first(arg); + struct sieve_ast_argument *stritem = sieve_ast_strlist_first(key_arg); while ( stritem != NULL ) { if ( !mtch_regex_validate_regexp(validator, ctx, stritem, cflags) ) @@ -186,6 +186,9 @@ bool mtch_regex_validate_context } } else { /* ??? */ + sieve_command_validate_error(validator, ctx->command_ctx, + "!!BUG!!: mtch_regex_validate_context: invalid ast argument type(%s)", + sieve_ast_argument_type_name(sieve_ast_argument_type(key_arg)) ); return FALSE; } diff --git a/src/lib-sieve/plugins/variables/tst-string.c b/src/lib-sieve/plugins/variables/tst-string.c index 27597e17ce9b94a94d35eab5586336e5641e08a9..282c85479df75e7bd1e79011f11dc3a0cb1561f3 100644 --- a/src/lib-sieve/plugins/variables/tst-string.c +++ b/src/lib-sieve/plugins/variables/tst-string.c @@ -216,15 +216,8 @@ static bool tst_string_operation_execute (result=sieve_coded_stringlist_next_item(source, &src_item)) && src_item != NULL ) { - /* - if ( mail_get_strings_utf8(renv->msgdata->mail, str_c(hdr_item), &strings) >= 0 ) { - - int i; - for ( i = 0; !matched && strings[i] != NULL; i++ ) { - if ( sieve_match_value(mctx, strings[i], strlen(strings[i])) ) - matched = TRUE; - } - }*/ + if ( sieve_match_value(mctx, str_c(src_item), str_len(src_item)) ) + matched = TRUE; } matched = sieve_match_end(mctx) || matched; diff --git a/src/lib-sieve/plugins/variables/variables.sieve b/src/lib-sieve/plugins/variables/variables.sieve index 0355e5452e2177b8ddaebd243f3d0c2a57a48dcc..7f255241de295ee2b5b46ca2b7f4782aa08faca8 100644 --- a/src/lib-sieve/plugins/variables/variables.sieve +++ b/src/lib-sieve/plugins/variables/variables.sieve @@ -20,3 +20,9 @@ fileinto "${friep}"; fileinto "${frop}"; fileinto "LEN-${len_frop}"; fileinto "${quote_friep}"; + +if string "${foo}" "foosome" { + keep; +} elsif string :comparator "i;ascii-casemap" "${foo}" "foosome" { + fileinto "CASE"; +} diff --git a/src/lib-sieve/sieve-commands.c b/src/lib-sieve/sieve-commands.c index 29c77c338adb89fffeee19d36d6cc9a0c5e854f5..d869afc2d68959a3ce6a8bff4cdbe5df4c27b1e8 100644 --- a/src/lib-sieve/sieve-commands.c +++ b/src/lib-sieve/sieve-commands.c @@ -72,7 +72,7 @@ static bool arg_string_list_validate stritem = sieve_ast_strlist_next(stritem); } - return FALSE; + return TRUE; } static inline bool emit_string_list_operand