diff --git a/CHANGES b/CHANGES
index 35064db935ba361334813d96b258d5df7cce44c8..b67e3dc8cfe90a718c8117af058f973bb4c3b411 100644
--- a/CHANGES
+++ b/CHANGES
@@ -77,6 +77,7 @@ OpenLDAP 2.4.24 Engineering
 	Fixed slapo-syncprov to refresh if context is dirty (ITS#6710)
 	Fixed slapo-syncprov CSN updates to all replicas (ITS#6718)
 	Fixed slapo-syncprov sessionlog ordering (ITS#6716)
+	Fixed slapo-translucent entry leak (ITS#6746)
 	Fixed contrib/autogroup LDAP URI with attribute filter (ITS#6536)
 	Fixed contrib/nssov to only close socket on shutdown (ITS#6676)
 	Fixed contrib/nssov multi platform support (ITS#6604)
diff --git a/servers/slapd/overlays/translucent.c b/servers/slapd/overlays/translucent.c
index 2bbe357d380b46f408d6ea4d5dad91453de9efd3..63f283c009153915b78e2191bfe2df6f7853864f 100644
--- a/servers/slapd/overlays/translucent.c
+++ b/servers/slapd/overlays/translucent.c
@@ -1160,11 +1160,11 @@ static int translucent_search(Operation *op, SlapReply *rs) {
 			av = tavl_end( tc.list, TAVL_DIR_LEFT );
 			while ( av ) {
 				rs->sr_entry = av->avl_data;
-				rc = test_filter( op, rs->sr_entry, op->ors_filter );
-				if ( rc == LDAP_COMPARE_TRUE ) {
+				if ( rc == LDAP_SUCCESS && LDAP_COMPARE_TRUE ==
+					test_filter( op, rs->sr_entry, op->ors_filter ))
+				{
 					rs->sr_flags = REP_ENTRY_MUSTBEFREED;
 					rc = send_search_entry( op, rs );
-					if ( rc ) break;
 				} else {
 					entry_free( rs->sr_entry );
 				}