From c934cc4216b07b24599face08bdd99e02f6a8dad Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan@rename-it.nl>
Date: Thu, 7 Apr 2016 04:01:07 +0200
Subject: [PATCH] lda-sieve plugin: Added trace logging support.

---
 src/plugins/lda-sieve/lda-sieve-plugin.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/src/plugins/lda-sieve/lda-sieve-plugin.c b/src/plugins/lda-sieve/lda-sieve-plugin.c
index 4e11b673d..bb5b0d703 100644
--- a/src/plugins/lda-sieve/lda-sieve-plugin.c
+++ b/src/plugins/lda-sieve/lda-sieve-plugin.c
@@ -771,6 +771,8 @@ static int lda_sieve_execute
 	struct sieve_message_data msgdata;
 	struct sieve_script_env scriptenv;
 	struct sieve_exec_status estatus;
+	struct sieve_trace_config trace_config;
+	struct sieve_trace_log *trace_log;
 	bool debug = mdctx->dest_user->mail_debug;
 	int ret;
 
@@ -803,6 +805,14 @@ static int lda_sieve_execute
 			}
 		}
 
+		/* Initialize trace logging */
+
+		if ( sieve_trace_config_get(svinst, &trace_config) >= 0 &&
+			sieve_trace_log_open(svinst, NULL, &trace_log) < 0 ) {
+			memset(&trace_config, 0, sizeof(trace_config));
+			trace_log = NULL;
+		}
+
 		/* Collect necessary message data */
 
 		memset(&msgdata, 0, sizeof(msgdata));
@@ -835,6 +845,8 @@ static int lda_sieve_execute
 		scriptenv.duplicate_flush = lda_sieve_duplicate_flush;
 		scriptenv.reject_mail = lda_sieve_reject_mail;
 		scriptenv.script_context = (void *) mdctx;
+		scriptenv.trace_log = trace_log;
+		scriptenv.trace_config = trace_config;
 		scriptenv.exec_status = &estatus;
 
 		srctx->scriptenv = &scriptenv;
@@ -850,6 +862,9 @@ static int lda_sieve_execute
 
 		mdctx->tried_default_save = estatus.tried_default_save;
 		*storage_r = estatus.last_storage;
+
+		if ( trace_log != NULL )
+			sieve_trace_log_free(&trace_log);
 	}
 
 	return ret;
-- 
GitLab