From fc1200954b3e60ffcada6d6e0ba0a81e6f8d1064 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan.bosch@open-xchange.com>
Date: Sat, 19 Oct 2024 23:54:09 +0200
Subject: [PATCH] plugins: doveadm-sieve: doveadm-sieve-sync - Add error
 handling for sieve_storage_open_script()

---
 src/plugins/doveadm-sieve/doveadm-sieve-sync.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/src/plugins/doveadm-sieve/doveadm-sieve-sync.c b/src/plugins/doveadm-sieve/doveadm-sieve-sync.c
index 4d8cdd5ab..da2b17019 100644
--- a/src/plugins/doveadm-sieve/doveadm-sieve-sync.c
+++ b/src/plugins/doveadm-sieve/doveadm-sieve-sync.c
@@ -561,9 +561,17 @@ sieve_attribute_get_sieve(struct mail_storage *storage, const char *key,
 		return -1;
 	}
 	ret = sieve_storage_open_script(svstorage, scriptname, &script, NULL);
-	i_assert(ret == 0);
-	ret = sieve_attribute_retrieve_script(storage, svstorage, script, FALSE,
-					      value_r, &error);
+	if (ret < 0) {
+		enum sieve_error error_code;
+
+		error = sieve_storage_get_last_error(svstorage, &error_code);
+		if (error_code == SIEVE_ERROR_NOT_FOUND)
+			ret = 0;
+	} else {
+		ret = sieve_attribute_retrieve_script(storage, svstorage,
+						      script, FALSE,
+						      value_r, &error);
+	}
 	if (ret < 0) {
 		mail_storage_set_critical(
 			storage, "Failed to access sieve script '%s': %s",
-- 
GitLab