diff --git a/src/lib-sieve/sieve-error.c b/src/lib-sieve/sieve-error.c
index 6b6d391d9653c9300f6baeee92634f07956689dd..e9f99124c8293e50cf5cb5acdc0cad4e7e17200c 100644
--- a/src/lib-sieve/sieve-error.c
+++ b/src/lib-sieve/sieve-error.c
@@ -96,9 +96,9 @@ void sieve_direct_verror
 				}
 			}
 			va_end(args_copy);
+			if (svinst->system_ehandler == ehandler)
+				return;
 		}
-		if (svinst->system_ehandler == ehandler)
-			return;
 	}
 
 	if ( ehandler == NULL )
@@ -138,9 +138,9 @@ void sieve_direct_vwarning
 				}
 			}
 			va_end(args_copy);
+			if (svinst->system_ehandler == ehandler)
+				return;
 		}
-		if (svinst->system_ehandler == ehandler)
-			return;
 	}
 
 	if ( ehandler == NULL )