diff --git a/src/plugins/imap-filter-sieve/imap-filter-sieve.c b/src/plugins/imap-filter-sieve/imap-filter-sieve.c index 3956f8aa83818fbb84775a7ce59f2f296a6d5c76..3b51bcfc2348c72e8dc01e89b9285a23630a50d2 100644 --- a/src/plugins/imap-filter-sieve/imap-filter-sieve.c +++ b/src/plugins/imap-filter-sieve/imap-filter-sieve.c @@ -433,7 +433,6 @@ int imap_filter_sieve_compile(struct imap_filter_sieve_context *sctx, const char *errormsg = sieve_script_get_last_error( script, &error); - if (error != SIEVE_ERROR_NONE) { str_truncate(sctx->errors, 0); str_append(sctx->errors, errormsg); @@ -444,6 +443,12 @@ int imap_filter_sieve_compile(struct imap_filter_sieve_context *sctx, } } + if (ret < 0 && str_len(sctx->errors) == 0) { + /* Failed, but no user error was logged: log a generic internal + error instead. */ + sieve_internal_error(ehandler, NULL, NULL); + } + *have_warnings_r = (sieve_get_warnings(ehandler) > 0); *errors_r = sctx->errors;