diff --git a/src/lib-sieve/sieve-extensions.c b/src/lib-sieve/sieve-extensions.c
index 69bb4ddd1460a8b9fb33c9f5d9a86025317aea19..3b4127df7ec8b418522aedfd844d7774093a894f 100644
--- a/src/lib-sieve/sieve-extensions.c
+++ b/src/lib-sieve/sieve-extensions.c
@@ -504,13 +504,15 @@ void sieve_extension_override
 	struct sieve_extension * const *mod_ext;
 	struct sieve_extension *old_ext;
 
+	old_ext = sieve_extension_lookup(svinst, name);
+	if (old_ext == ext)
+		return;
+	i_assert( old_ext == NULL || !old_ext->overridden );
+
 	i_assert( ext->id >= 0 &&
 		ext->id < (int) array_count(&ext_reg->extensions) );
 	mod_ext = array_idx(&ext_reg->extensions, ext->id);
 
-	old_ext = sieve_extension_lookup(svinst, name);
-	i_assert( old_ext == NULL || !old_ext->overridden );
-
 	sieve_extension_insert(svinst, name, *mod_ext);
 	if ( old_ext != NULL )
 		old_ext->overridden = TRUE;