diff --git a/src/plugins/imapsieve/imap-sieve.c b/src/plugins/imapsieve/imap-sieve.c
index 5356830950dc230cd682624892c631fbf7d07bd8..f4ffeb33b91ee68d8c5dd3b164895ecc86a0beff 100644
--- a/src/plugins/imapsieve/imap-sieve.c
+++ b/src/plugins/imapsieve/imap-sieve.c
@@ -309,15 +309,20 @@ imap_sieve_run_init_trace_log(struct imap_sieve_run *isrun,
 		*trace_log_r = isrun->trace_log;
 		return;
 	}
+	isrun->trace_log_initialized = TRUE;
+
+	if (sieve_trace_config_get(svinst, &isrun->trace_config) < 0 ||
+	    sieve_trace_log_open(svinst, &isrun->trace_log) < 0) {
+		i_zero(&isrun->trace_config);
+		isrun->trace_log = NULL;
 
-	if (sieve_trace_config_get(svinst, &isrun->trace_config) >= 0) {
-		if (sieve_trace_log_open(svinst, &isrun->trace_log) < 0)
-			i_zero(&isrun->trace_config);
+		i_zero(trace_config_r);
+		*trace_log_r = NULL;
+		return;
 	}
 
 	*trace_config_r = isrun->trace_config;
 	*trace_log_r = isrun->trace_log;
-	isrun->trace_log_initialized = TRUE;
 }
 
 int imap_sieve_run_init(struct imap_sieve *isieve,