Skip to content
Snippets Groups Projects
Commit 495f26b1 authored by Quanah Gibson-Mount's avatar Quanah Gibson-Mount
Browse files

ITS#5986

parent 988f1bbd
No related branches found
No related tags found
No related merge requests found
......@@ -4,6 +4,7 @@ OpenLDAP 2.4.16 Engineering
Fixed libldap GnuTLS TLSVerifyCilent try (ITS#5981)
Fixed libldap segfault in checking cert/DN (ITS#5976)
Fixed libldap peer cert memory leak again (ITS#5849)
Fixed slapd backglue with empty DBs (ITS#5986)
Fixed slapd-bdb/hdb cachesize handling (ITS#5860)
Fixed slapd-ldap/meta with broken AD results (ITS#5977)
Fixed slapd-ldap/meta with invalid attrs again (ITS#5959)
......
......@@ -52,6 +52,8 @@ static slap_overinst glue;
static int glueMode;
static BackendDB *glueBack;
static BackendDB glueBackDone;
#define GLUEBACK_DONE (&glueBackDone)
static slap_response glue_op_response;
......@@ -591,7 +593,7 @@ glue_tool_entry_close (
{
int rc = 0;
if (glueBack) {
if (glueBack && glueBack != GLUEBACK_DONE) {
if (!glueBack->be_entry_close)
return 0;
rc = glueBack->be_entry_close (glueBack);
......@@ -740,6 +742,7 @@ glue_tool_entry_first (
slap_overinst *on = glue_tool_inst( b0->bd_info );
glueinfo *gi = on->on_bi.bi_private;
int i;
ID rc;
/* If we're starting from scratch, start at the most general */
if (!glueBack) {
......@@ -759,7 +762,26 @@ glue_tool_entry_first (
glueBack->be_entry_open (glueBack, glueMode) != 0)
return NOID;
return glueBack->be_entry_first (glueBack);
rc = glueBack->be_entry_first (glueBack);
while ( rc == NOID ) {
if ( glueBack && glueBack->be_entry_close )
glueBack->be_entry_close (glueBack);
for (i=0; i<gi->gi_nodes; i++) {
if (gi->gi_n[i].gn_be == glueBack)
break;
}
if (i == 0) {
glueBack = GLUEBACK_DONE;
break;
} else {
glueBack = gi->gi_n[i-1].gn_be;
rc = glue_tool_entry_first (b0);
if ( glueBack == GLUEBACK_DONE ) {
break;
}
}
}
return rc;
}
static ID
......@@ -786,11 +808,14 @@ glue_tool_entry_next (
break;
}
if (i == 0) {
glueBack = NULL;
glueBack = GLUEBACK_DONE;
break;
} else {
glueBack = gi->gi_n[i-1].gn_be;
rc = glue_tool_entry_first (b0);
if ( glueBack == GLUEBACK_DONE ) {
break;
}
}
}
return rc;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment