From 2a39311d439e7ce99545b69fb95dc656c3a9bed6 Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan.bosch@dovecot.fi> Date: Mon, 7 May 2018 11:03:01 +0200 Subject: [PATCH] lib-sieve: Add SIEVE_EXECUTE_FLAG_SKIP_RESPONSES execute flag. This causes the reject and vacation response actions to be skipped without error. --- src/lib-sieve/ext-reject.c | 6 ++++++ src/lib-sieve/plugins/vacation/cmd-vacation.c | 6 ++++++ src/lib-sieve/sieve-types.h | 4 +++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/lib-sieve/ext-reject.c b/src/lib-sieve/ext-reject.c index 22dd0c410..9519f4118 100644 --- a/src/lib-sieve/ext-reject.c +++ b/src/lib-sieve/ext-reject.c @@ -488,6 +488,12 @@ static int act_reject_commit sender = sieve_message_get_sender(aenv->msgctx); recipient = sieve_message_get_orig_recipient(aenv->msgctx); + if ((aenv->flags & SIEVE_EXECUTE_FLAG_SKIP_RESPONSES) != 0) { + sieve_result_global_log(aenv, + "not sending reject message (skipped)"); + return SIEVE_EXEC_OK; + } + if ( smtp_address_isnull(recipient) ) { sieve_result_global_warning(aenv, "reject action aborted: envelope recipient is <>"); diff --git a/src/lib-sieve/plugins/vacation/cmd-vacation.c b/src/lib-sieve/plugins/vacation/cmd-vacation.c index 501296ce8..048bc61b3 100644 --- a/src/lib-sieve/plugins/vacation/cmd-vacation.c +++ b/src/lib-sieve/plugins/vacation/cmd-vacation.c @@ -1127,6 +1127,12 @@ static int act_vacation_commit const char *const *hdsp, *const *headers; int ret; + if ((aenv->flags & SIEVE_EXECUTE_FLAG_SKIP_RESPONSES) != 0) { + sieve_result_global_log(aenv, + "not sending vacation reply (skipped)"); + return SIEVE_EXEC_OK; + } + sender = sieve_message_get_sender(aenv->msgctx); recipient = sieve_message_get_final_recipient(aenv->msgctx); diff --git a/src/lib-sieve/sieve-types.h b/src/lib-sieve/sieve-types.h index b5cbbf4d1..05514b947 100644 --- a/src/lib-sieve/sieve-types.h +++ b/src/lib-sieve/sieve-types.h @@ -155,7 +155,9 @@ enum sieve_execute_flags { /* Do not execute (implicit keep) at the end */ SIEVE_EXECUTE_FLAG_DEFER_KEEP = (1<<1), /* There is no envelope */ - SIEVE_EXECUTE_FLAG_NO_ENVELOPE = (1<<2) + SIEVE_EXECUTE_FLAG_NO_ENVELOPE = (1<<2), + /* Skip sending responses */ + SIEVE_EXECUTE_FLAG_SKIP_RESPONSES = (1<<3), }; /* -- GitLab