From 1d134b79719e5f7b4939905b6986700fcbb41675 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan.bosch@open-xchange.com>
Date: Mon, 2 Sep 2024 01:37:02 +0200
Subject: [PATCH] lib-sieve: sieve-storage - Split off
 sieve_storage_create_driver_event()

---
 src/lib-sieve/sieve-storage.c | 32 ++++++++++++++++++++++++--------
 1 file changed, 24 insertions(+), 8 deletions(-)

diff --git a/src/lib-sieve/sieve-storage.c b/src/lib-sieve/sieve-storage.c
index 0d84e6e48..ca92b431d 100644
--- a/src/lib-sieve/sieve-storage.c
+++ b/src/lib-sieve/sieve-storage.c
@@ -123,16 +123,28 @@ bool sieve_storage_class_exists(struct sieve_instance *svinst,
 
 static struct event *
 sieve_storage_create_event(struct sieve_instance *svinst,
-			   struct event *event_parent, const char *driver_name)
+			   struct event *event_parent)
 {
 	struct event *event;
 
 	event = event_create(event_parent == NULL ?
 			     svinst->event : event_parent);
 	event_add_category(event, &event_category_sieve_storage);
+	event_set_append_log_prefix(event, "storage: ");
+
+	return event;
+}
+
+static struct event *
+sieve_storage_create_driver_event(struct event *event_parent,
+				  const char *driver_name)
+{
+	struct event *event;
+
+	event = event_create(event_parent);
 	event_add_str(event, "driver", driver_name);
-	event_set_append_log_prefix(
-		event, t_strdup_printf("storage: %s: ", driver_name));
+	event_set_append_log_prefix(event,
+		t_strdup_printf("%s: ", driver_name));
 
 	return event;
 }
@@ -296,8 +308,10 @@ int sieve_storage_alloc(struct sieve_instance *svinst, struct event *event,
 		storage->event = event;
 		event_ref(storage->event);
 	} else {
-		storage->event = sieve_storage_create_event(
-			svinst, svinst->event, storage_class->driver_name);
+		event = sieve_storage_create_event(svinst, svinst->event);
+		storage->event = sieve_storage_create_driver_event(
+			event, storage_class->driver_name);
+		event_unref(&event);
 	}
 
 	*storage_r = storage;
@@ -314,7 +328,7 @@ sieve_storage_init(struct sieve_instance *svinst,
 	struct sieve_storage *storage;
 	const char *const *options;
 	const char *location;
-	struct event *event;
+	struct event *storage_event, *event;
 	enum sieve_error error_code;
 	int ret;
 
@@ -326,8 +340,10 @@ sieve_storage_init(struct sieve_instance *svinst,
 
 	i_assert(storage_class->v.init != NULL);
 
-	event = sieve_storage_create_event(svinst, svinst->event,
-					   storage_class->driver_name);
+	storage_event = sieve_storage_create_event(svinst, svinst->event);
+	event = sieve_storage_create_driver_event(storage_event,
+						  storage_class->driver_name);
+	event_unref(&storage_event);
 
 	if ((flags & SIEVE_STORAGE_FLAG_SYNCHRONIZING) != 0 &&
 	    !storage_class->allows_synchronization) {
-- 
GitLab