From 3f007c7dd848c96fad4619796b5aa99d4c8d98a3 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan.bosch@open-xchange.com>
Date: Mon, 4 Jan 2021 16:09:00 +0100
Subject: [PATCH] plugins: imap-filter-sieve: Make sure an (internal) error
 message is available for failed compile.

---
 src/plugins/imap-filter-sieve/imap-filter-sieve.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/plugins/imap-filter-sieve/imap-filter-sieve.c b/src/plugins/imap-filter-sieve/imap-filter-sieve.c
index 3956f8aa8..3b51bcfc2 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;
 
-- 
GitLab