diff --git a/sieve/tests/actions.sieve b/sieve/tests/actions.sieve new file mode 100644 index 0000000000000000000000000000000000000000..9fd9b6b32e66e18c962ff89b1247c7760592b2dc --- /dev/null +++ b/sieve/tests/actions.sieve @@ -0,0 +1,13 @@ +if address :contains "to" "vestingbar" { + redirect "stephan@example.com"; + keep; +} else { + discard; +} + +redirect "stephan@rename-it.nl"; +redirect "nico@example.nl"; +redirect "stephan@example.com"; + +keep; +discard; diff --git a/src/lib-sieve/cmd-discard.c b/src/lib-sieve/cmd-discard.c index eb3cd183419dd9c317a5a4e624a611e3477c5261..660dd8e6ea46a06423cfec644a0a7dd74fe2aedf 100644 --- a/src/lib-sieve/cmd-discard.c +++ b/src/lib-sieve/cmd-discard.c @@ -42,6 +42,18 @@ const struct sieve_opcode cmd_discard_opcode = { opc_discard_execute }; +/* Discard action */ + +static int act_discard_execute + (const struct sieve_action *action, const struct sieve_action_exec_env *aenv, + void *context); + +const struct sieve_action act_discard = { + "discard", + NULL, NULL, NULL, + act_discard_execute +}; + /* * Generation */ @@ -66,7 +78,22 @@ static bool opc_discard_execute { printf(">> DISCARD\n"); + sieve_result_add_action(renv->result, renv, &act_discard, NULL); + return TRUE; } +/* + * Action + */ + +static int act_discard_execute +(const struct sieve_action *action ATTR_UNUSED, + const struct sieve_action_exec_env *aenv, void *context) +{ + + return 0; +} + + diff --git a/src/lib-sieve/cmd-keep.c b/src/lib-sieve/cmd-keep.c index 68b7599f3cdf59688b08ff6577d3c949a428a191..4acbd98eb275ff5aba6b7c57590541f98fd9408a 100644 --- a/src/lib-sieve/cmd-keep.c +++ b/src/lib-sieve/cmd-keep.c @@ -54,7 +54,6 @@ const struct sieve_action act_keep = { act_keep_execute }; - /* * Generation */