diff --git a/src/lib-sieve/sieve-error.c b/src/lib-sieve/sieve-error.c
index 72d0ea5d4e704ae3a708ae4ad62c731a210cb3f1..c56a2b62368ecf1f9d735bc344cdf0d2c95d1c4b 100644
--- a/src/lib-sieve/sieve-error.c
+++ b/src/lib-sieve/sieve-error.c
@@ -98,18 +98,20 @@ void sieve_direct_logv(struct sieve_instance *svinst,
 		       enum sieve_error_flags flags,
 		       const char *fmt, va_list args)
 {
+	bool master_log = (ehandler != NULL && ehandler->master_log);
+	bool global_info_log = (
+		(flags & SIEVE_ERROR_FLAG_GLOBAL_MAX_INFO) != 0 &&
+		params->log_type > LOG_TYPE_INFO);
+
 	if ((flags & SIEVE_ERROR_FLAG_GLOBAL) != 0 &&
 	    (ehandler == NULL || ehandler->parent == NULL) &&
-	    (ehandler == NULL || !ehandler->master_log ||
-	     (params->log_type > LOG_TYPE_INFO &&
-	      (flags & SIEVE_ERROR_FLAG_GLOBAL_MAX_INFO) != 0))) {
+	    (!master_log || global_info_log)) {
 		struct sieve_error_params new_params = *params;
 		va_list args_copy;
 
 		VA_COPY(args_copy, args);
 
-		if ((flags & SIEVE_ERROR_FLAG_GLOBAL_MAX_INFO) != 0 &&
-		    new_params.log_type > LOG_TYPE_INFO)
+		if (global_info_log)
 			new_params.log_type = LOG_TYPE_INFO;
 
 		sieve_direct_master_vlog(svinst, &new_params,
@@ -117,7 +119,7 @@ void sieve_direct_logv(struct sieve_instance *svinst,
 
 		va_end(args_copy);
 
-		if (ehandler != NULL && ehandler->master_log)
+		if (master_log)
 			return;
 	}