mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-24 13:24:56 +08:00
ITS#6763,7053 Cleanup after sending entry/searchref.
slap_send_search_entry(), slap_send_search_reference(): Never skip the cleanup code. Sending an entry did on sizeLimitExceeded/busy. Sending a ref dropped rs_flush_entry() on error.
This commit is contained in:
parent
2014460eb5
commit
074fe6c298
@ -964,19 +964,21 @@ slap_send_search_entry( Operation *op, SlapReply *rs )
|
||||
*/
|
||||
char **e_flags = NULL;
|
||||
|
||||
rs->sr_type = REP_SEARCH;
|
||||
|
||||
if ( op->ors_slimit >= 0 && rs->sr_nentries >= op->ors_slimit ) {
|
||||
return LDAP_SIZELIMIT_EXCEEDED;
|
||||
rc = LDAP_SIZELIMIT_EXCEEDED;
|
||||
goto error_return;
|
||||
}
|
||||
|
||||
/* Every 64 entries, check for thread pool pause */
|
||||
if ( ( ( rs->sr_nentries & 0x3f ) == 0x3f ) &&
|
||||
ldap_pvt_thread_pool_pausing( &connection_pool ) > 0 )
|
||||
{
|
||||
return LDAP_BUSY;
|
||||
rc = LDAP_BUSY;
|
||||
goto error_return;
|
||||
}
|
||||
|
||||
rs->sr_type = REP_SEARCH;
|
||||
|
||||
/* eventually will loop through generated operational attribute types
|
||||
* currently implemented types include:
|
||||
* entryDN, subschemaSubentry, and hasSubordinates */
|
||||
@ -1607,7 +1609,11 @@ slap_send_search_reference( Operation *op, SlapReply *rs )
|
||||
|
||||
Debug( LDAP_DEBUG_TRACE, "<= send_search_reference\n", 0, 0, 0 );
|
||||
|
||||
if ( 0 ) {
|
||||
rel:
|
||||
rs_flush_entry( op, rs, NULL );
|
||||
}
|
||||
|
||||
if ( op->o_callback ) {
|
||||
(void)slap_cleanup_play( op, rs );
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user