mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-22 23:59:34 -05:00
More streamlining.
This commit is contained in:
parent
5f4db0b47f
commit
ce581462bd
1 changed files with 21 additions and 34 deletions
|
|
@ -40,7 +40,8 @@ typedef struct gluenode {
|
||||||
} gluenode;
|
} gluenode;
|
||||||
|
|
||||||
typedef struct glueinfo {
|
typedef struct glueinfo {
|
||||||
BackendDB *be;
|
BackendInfo bi;
|
||||||
|
BackendDB bd;
|
||||||
int nodes;
|
int nodes;
|
||||||
gluenode n[1];
|
gluenode n[1];
|
||||||
} glueinfo;
|
} glueinfo;
|
||||||
|
|
@ -55,7 +56,7 @@ glue_back_select (
|
||||||
const char *dn
|
const char *dn
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
glueinfo *gi = *(glueinfo **) (be->bd_info+1);
|
glueinfo *gi = (glueinfo *) be->bd_info;
|
||||||
struct berval bv;
|
struct berval bv;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
|
@ -114,7 +115,7 @@ glue_back_db_open (
|
||||||
BackendDB *be
|
BackendDB *be
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
glueinfo *gi = *(glueinfo **) (be->bd_info+1);
|
glueinfo *gi = (glueinfo *) be->bd_info;
|
||||||
static int glueOpened = 0;
|
static int glueOpened = 0;
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
|
||||||
|
|
@ -122,10 +123,10 @@ glue_back_db_open (
|
||||||
|
|
||||||
glueOpened = 1;
|
glueOpened = 1;
|
||||||
|
|
||||||
gi->be->be_acl = be->be_acl;
|
gi->bd.be_acl = be->be_acl;
|
||||||
|
|
||||||
if (gi->be->bd_info->bi_db_open)
|
if (gi->bd.bd_info->bi_db_open)
|
||||||
rc = gi->be->bd_info->bi_db_open(gi->be);
|
rc = gi->bd.bd_info->bi_db_open(&gi->bd);
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
@ -135,7 +136,7 @@ glue_back_db_close (
|
||||||
BackendDB *be
|
BackendDB *be
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
glueinfo *gi = *(glueinfo **) (be->bd_info+1);
|
glueinfo *gi = (glueinfo *) be->bd_info;
|
||||||
static int glueClosed = 0;
|
static int glueClosed = 0;
|
||||||
|
|
||||||
if (glueClosed) return 0;
|
if (glueClosed) return 0;
|
||||||
|
|
@ -143,8 +144,8 @@ glue_back_db_close (
|
||||||
glueClosed = 1;
|
glueClosed = 1;
|
||||||
|
|
||||||
/* Close the master */
|
/* Close the master */
|
||||||
if (gi->be->bd_info->bi_db_close)
|
if (gi->bd.bd_info->bi_db_close)
|
||||||
gi->be->bd_info->bi_db_close( gi->be );
|
gi->bd.bd_info->bi_db_close( &gi->bd );
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -154,11 +155,10 @@ glue_back_db_destroy (
|
||||||
BackendDB *be
|
BackendDB *be
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
glueinfo *gi = *(glueinfo **) (be->bd_info+1);
|
glueinfo *gi = (glueinfo *) be->bd_info;
|
||||||
|
|
||||||
if (gi->be->bd_info->bi_db_destroy)
|
if (gi->bd.bd_info->bi_db_destroy)
|
||||||
gi->be->bd_info->bi_db_destroy( gi->be );
|
gi->bd.bd_info->bi_db_destroy( &gi->bd );
|
||||||
free (gi->be);
|
|
||||||
free (gi);
|
free (gi);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -290,7 +290,7 @@ glue_back_search (
|
||||||
int attrsonly
|
int attrsonly
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
glueinfo *gi = *(glueinfo **) (b0->bd_info+1);
|
glueinfo *gi = (glueinfo *) b0->bd_info;
|
||||||
BackendDB *be;
|
BackendDB *be;
|
||||||
int i, rc = 0, t2limit = 0, s2limit = 0;
|
int i, rc = 0, t2limit = 0, s2limit = 0;
|
||||||
long stoptime = 0;
|
long stoptime = 0;
|
||||||
|
|
@ -431,7 +431,7 @@ glue_tool_entry_first (
|
||||||
BackendDB *b0
|
BackendDB *b0
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
glueinfo *gi = *(glueinfo **) (b0->bd_info+1);
|
glueinfo *gi = (glueinfo *) b0->bd_info;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/* If we're starting from scratch, start at the most general */
|
/* If we're starting from scratch, start at the most general */
|
||||||
|
|
@ -456,7 +456,7 @@ glue_tool_entry_next (
|
||||||
BackendDB *b0
|
BackendDB *b0
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
glueinfo *gi = *(glueinfo **) (b0->bd_info+1);
|
glueinfo *gi = (glueinfo *) b0->bd_info;
|
||||||
int i;
|
int i;
|
||||||
ID rc;
|
ID rc;
|
||||||
|
|
||||||
|
|
@ -544,7 +544,7 @@ glue_tool_sync (
|
||||||
BackendDB *b0
|
BackendDB *b0
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
glueinfo *gi = *(glueinfo **) (b0->bd_info+1);
|
glueinfo *gi = (glueinfo *) b0->bd_info;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/* just sync everyone */
|
/* just sync everyone */
|
||||||
|
|
@ -598,18 +598,10 @@ glue_sub_init( )
|
||||||
*/
|
*/
|
||||||
b1->be_flags |= SLAP_BFLAG_GLUE_INSTANCE;
|
b1->be_flags |= SLAP_BFLAG_GLUE_INSTANCE;
|
||||||
gi = (glueinfo *)ch_malloc(sizeof(glueinfo));
|
gi = (glueinfo *)ch_malloc(sizeof(glueinfo));
|
||||||
|
|
||||||
/* Space for a copy of the backend, our
|
|
||||||
* own backendInfo structure, and a pointer
|
|
||||||
* to our glueinfo
|
|
||||||
*/
|
|
||||||
gi->be = (BackendDB *)ch_malloc(
|
|
||||||
sizeof(BackendDB) + sizeof(BackendInfo) +
|
|
||||||
sizeof(glueinfo *) );
|
|
||||||
bi = (BackendInfo *)(gi->be+1);
|
|
||||||
*gi->be = *b1;
|
|
||||||
gi->nodes = 0;
|
gi->nodes = 0;
|
||||||
*bi = *b1->bd_info;
|
gi->bd = *b1;
|
||||||
|
gi->bi = *b1->bd_info;
|
||||||
|
bi = (BackendInfo *)gi;
|
||||||
bi->bi_open = glue_back_open;
|
bi->bi_open = glue_back_open;
|
||||||
bi->bi_close = glue_back_close;
|
bi->bi_close = glue_back_close;
|
||||||
bi->bi_db_open = glue_back_db_open;
|
bi->bi_db_open = glue_back_db_open;
|
||||||
|
|
@ -642,15 +634,10 @@ glue_sub_init( )
|
||||||
/* One more node for the master */
|
/* One more node for the master */
|
||||||
gi = (glueinfo *)ch_realloc(gi,
|
gi = (glueinfo *)ch_realloc(gi,
|
||||||
sizeof(glueinfo) + gi->nodes * sizeof(gluenode));
|
sizeof(glueinfo) + gi->nodes * sizeof(gluenode));
|
||||||
gi->n[gi->nodes].be = gi->be;
|
gi->n[gi->nodes].be = &gi->bd;
|
||||||
dnParent( &b1->be_nsuffix[0], &gi->n[gi->nodes].pdn );
|
dnParent( &b1->be_nsuffix[0], &gi->n[gi->nodes].pdn );
|
||||||
gi->nodes++;
|
gi->nodes++;
|
||||||
b1->bd_info = bi;
|
b1->bd_info = bi;
|
||||||
/* Save a pointer to our private info. Don't use
|
|
||||||
* be_private or bi_private, to avoid having to fix
|
|
||||||
* that up before calling the real backend.
|
|
||||||
*/
|
|
||||||
*(glueinfo **)(bi+1) = gi;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* If there are any unresolved subordinates left, something is wrong */
|
/* If there are any unresolved subordinates left, something is wrong */
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue