diff --git a/src/lib-sieve/sieve-result.c b/src/lib-sieve/sieve-result.c index c88eaae4fba93d5781b4496843a0f7bc4f51bd3f..b5711524acc37a95da07f7cc27e56c4c80805961 100644 --- a/src/lib-sieve/sieve-result.c +++ b/src/lib-sieve/sieve-result.c @@ -1743,8 +1743,11 @@ void sieve_result_log(const struct sieve_action_exec_env *aenv, const char *csrc_filename, unsigned int csrc_linenum, const char *fmt, ...) { + const struct sieve_execute_env *eenv = aenv->exec_env; struct sieve_error_params params = { - .log_type = LOG_TYPE_INFO, + .log_type = (HAS_ALL_BITS(eenv->flags, + SIEVE_EXECUTE_FLAG_LOG_RESULT) ? + LOG_TYPE_INFO : LOG_TYPE_DEBUG), .event = aenv->event, .csrc = { .filename = csrc_filename, @@ -1765,7 +1768,9 @@ void sieve_result_global_log(const struct sieve_action_exec_env *aenv, { const struct sieve_execute_env *eenv = aenv->exec_env; struct sieve_error_params params = { - .log_type = LOG_TYPE_INFO, + .log_type = (HAS_ALL_BITS(eenv->flags, + SIEVE_EXECUTE_FLAG_LOG_RESULT) ? + LOG_TYPE_INFO : LOG_TYPE_DEBUG), .event = aenv->event, .csrc = { .filename = csrc_filename, @@ -1833,7 +1838,9 @@ void sieve_result_event_log(const struct sieve_action_exec_env *aenv, { const struct sieve_execute_env *eenv = aenv->exec_env; struct sieve_error_params params = { - .log_type = LOG_TYPE_INFO, + .log_type = (HAS_ALL_BITS(eenv->flags, + SIEVE_EXECUTE_FLAG_LOG_RESULT) ? + LOG_TYPE_INFO : LOG_TYPE_DEBUG), .event = event, .csrc = { .filename = csrc_filename, diff --git a/src/lib-sieve/sieve-types.h b/src/lib-sieve/sieve-types.h index b4d9d840a5690d285ccc06a839fe9cbd27b2aa41..df8928c9a4b1fecba3e787f88979a417853e30a6 100644 --- a/src/lib-sieve/sieve-types.h +++ b/src/lib-sieve/sieve-types.h @@ -160,6 +160,8 @@ enum sieve_execute_flags { SIEVE_EXECUTE_FLAG_NO_ENVELOPE = (1<<2), /* Skip sending responses */ SIEVE_EXECUTE_FLAG_SKIP_RESPONSES = (1<<3), + /* Log result as info (when absent, only debug logging is performed) */ + SIEVE_EXECUTE_FLAG_LOG_RESULT = (1<<4), }; /* diff --git a/src/plugins/lda-sieve/lda-sieve-plugin.c b/src/plugins/lda-sieve/lda-sieve-plugin.c index 5d04815211b61f6dbab2a0a5087b05632ed23ff5..1435b1be5fee5c76ccc9e4bd4ceb4cf15e0b77fd 100644 --- a/src/plugins/lda-sieve/lda-sieve-plugin.c +++ b/src/plugins/lda-sieve/lda-sieve-plugin.c @@ -487,7 +487,7 @@ lda_sieve_execute_script(struct lda_sieve_run_context *srctx, struct sieve_error_handler *exec_ehandler; struct sieve_binary *sbin = NULL; enum sieve_compile_flags cpflags = 0; - enum sieve_execute_flags exflags = 0; + enum sieve_execute_flags exflags = SIEVE_EXECUTE_FLAG_LOG_RESULT; bool user_script, more; *error_r = SIEVE_ERROR_NONE; @@ -580,6 +580,7 @@ static int lda_sieve_execute_scripts(struct lda_sieve_run_context *srctx) struct sieve_multiscript *mscript; struct sieve_error_handler *exec_ehandler; struct sieve_script *script, *last_script = NULL; + enum sieve_execute_flags exflags = SIEVE_EXECUTE_FLAG_LOG_RESULT; bool discard_script; enum sieve_error error; unsigned int i; @@ -645,9 +646,10 @@ static int lda_sieve_execute_scripts(struct lda_sieve_run_context *srctx) exec_ehandler = (srctx->user_ehandler != NULL ? srctx->user_ehandler : srctx->master_ehandler); if (error == SIEVE_ERROR_TEMP_FAILURE) { - ret = sieve_multiscript_tempfail(&mscript, exec_ehandler, 0); + ret = sieve_multiscript_tempfail(&mscript, exec_ehandler, + exflags); } else { - ret = sieve_multiscript_finish(&mscript, exec_ehandler, 0, + ret = sieve_multiscript_finish(&mscript, exec_ehandler, exflags, NULL); } diff --git a/src/sieve-tools/sieve-filter.c b/src/sieve-tools/sieve-filter.c index cf7eb5438529a8f9ca1cada75d6fcee55a719710..6ef92100f5c57677aaf95437ade3e800c8f56f29 100644 --- a/src/sieve-tools/sieve-filter.c +++ b/src/sieve-tools/sieve-filter.c @@ -89,6 +89,7 @@ result_amend_log_message(const struct sieve_script_env *senv, static int filter_message(struct sieve_filter_context *sfctx, struct mail *mail) { struct sieve_error_handler *ehandler = sfctx->data->ehandler; + enum sieve_execute_flags exflags = SIEVE_EXECUTE_FLAG_LOG_RESULT; struct sieve_script_env *senv = sfctx->data->senv; struct sieve_exec_status estatus; struct sieve_binary *sbin; @@ -137,7 +138,7 @@ static int filter_message(struct sieve_filter_context *sfctx, struct mail *mail) date, size, str_sanitize(subject, 40)); ret = sieve_execute(sbin, &msgdata, senv, ehandler, ehandler, - 0, NULL); + exflags, NULL); } else { o_stream_nsend_str( sfctx->teststream, @@ -151,7 +152,7 @@ static int filter_message(struct sieve_filter_context *sfctx, struct mail *mail) str_sanitize(subject, 40))); ret = sieve_test(sbin, &msgdata, senv, ehandler, - sfctx->teststream, 0, NULL); + sfctx->teststream, exflags, NULL); } /* Handle message in source folder */ diff --git a/src/sieve-tools/sieve-test.c b/src/sieve-tools/sieve-test.c index 5f04a23dfc88ab4b2db7be72a51045901a4342c1..92793920be95da74e5773769be6c756a8fa819cf 100644 --- a/src/sieve-tools/sieve-test.c +++ b/src/sieve-tools/sieve-test.c @@ -162,6 +162,7 @@ int main(int argc, char **argv) struct sieve_message_data msgdata; struct sieve_script_env scriptenv; struct sieve_exec_status estatus; + enum sieve_execute_flags exflags = SIEVE_EXECUTE_FLAG_LOG_RESULT; struct sieve_error_handler *ehandler; struct ostream *teststream = NULL; struct sieve_trace_log *trace_log = NULL; @@ -361,11 +362,12 @@ int main(int argc, char **argv) /* Execute/Test script */ if (execute) { ret = sieve_execute(sbin, &msgdata, &scriptenv, - ehandler, ehandler, 0, + ehandler, ehandler, exflags, NULL); } else { ret = sieve_test(sbin, &msgdata, &scriptenv, - ehandler, teststream, 0, NULL); + ehandler, teststream, exflags, + NULL); } } else { /* Multiple scripts */ @@ -414,7 +416,8 @@ int main(int argc, char **argv) /* Execute/Test script */ more = sieve_multiscript_run( - mscript, sbin, ehandler, ehandler, 0); + mscript, sbin, ehandler, ehandler, + exflags); } /* Execute/Test main script */ @@ -434,11 +437,12 @@ int main(int argc, char **argv) main_sbin = NULL; (void)sieve_multiscript_run( - mscript, sbin, ehandler, ehandler, 0); + mscript, sbin, ehandler, ehandler, + exflags); } result = sieve_multiscript_finish( - &mscript, ehandler, 0, NULL); + &mscript, ehandler, exflags, NULL); ret = (ret > 0 ? result : ret); }