From: Howard Chu Date: Thu, 28 Nov 2002 15:47:06 +0000 (+0000) Subject: More streamlining. X-Git-Tag: NO_SLAP_OP_BLOCKS~754 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=ce581462bde25e92d2ad836621f102b7da4b77c3;p=openldap More streamlining. --- diff --git a/servers/slapd/backglue.c b/servers/slapd/backglue.c index 1e4a81dd4f..1195aad687 100644 --- a/servers/slapd/backglue.c +++ b/servers/slapd/backglue.c @@ -40,7 +40,8 @@ typedef struct gluenode { } gluenode; typedef struct glueinfo { - BackendDB *be; + BackendInfo bi; + BackendDB bd; int nodes; gluenode n[1]; } glueinfo; @@ -55,7 +56,7 @@ glue_back_select ( const char *dn ) { - glueinfo *gi = *(glueinfo **) (be->bd_info+1); + glueinfo *gi = (glueinfo *) be->bd_info; struct berval bv; int i; @@ -114,7 +115,7 @@ glue_back_db_open ( BackendDB *be ) { - glueinfo *gi = *(glueinfo **) (be->bd_info+1); + glueinfo *gi = (glueinfo *) be->bd_info; static int glueOpened = 0; int rc = 0; @@ -122,10 +123,10 @@ glue_back_db_open ( glueOpened = 1; - gi->be->be_acl = be->be_acl; + gi->bd.be_acl = be->be_acl; - if (gi->be->bd_info->bi_db_open) - rc = gi->be->bd_info->bi_db_open(gi->be); + if (gi->bd.bd_info->bi_db_open) + rc = gi->bd.bd_info->bi_db_open(&gi->bd); return rc; } @@ -135,7 +136,7 @@ glue_back_db_close ( BackendDB *be ) { - glueinfo *gi = *(glueinfo **) (be->bd_info+1); + glueinfo *gi = (glueinfo *) be->bd_info; static int glueClosed = 0; if (glueClosed) return 0; @@ -143,8 +144,8 @@ glue_back_db_close ( glueClosed = 1; /* Close the master */ - if (gi->be->bd_info->bi_db_close) - gi->be->bd_info->bi_db_close( gi->be ); + if (gi->bd.bd_info->bi_db_close) + gi->bd.bd_info->bi_db_close( &gi->bd ); return 0; } @@ -154,11 +155,10 @@ glue_back_db_destroy ( BackendDB *be ) { - glueinfo *gi = *(glueinfo **) (be->bd_info+1); + glueinfo *gi = (glueinfo *) be->bd_info; - if (gi->be->bd_info->bi_db_destroy) - gi->be->bd_info->bi_db_destroy( gi->be ); - free (gi->be); + if (gi->bd.bd_info->bi_db_destroy) + gi->bd.bd_info->bi_db_destroy( &gi->bd ); free (gi); return 0; } @@ -290,7 +290,7 @@ glue_back_search ( int attrsonly ) { - glueinfo *gi = *(glueinfo **) (b0->bd_info+1); + glueinfo *gi = (glueinfo *) b0->bd_info; BackendDB *be; int i, rc = 0, t2limit = 0, s2limit = 0; long stoptime = 0; @@ -431,7 +431,7 @@ glue_tool_entry_first ( BackendDB *b0 ) { - glueinfo *gi = *(glueinfo **) (b0->bd_info+1); + glueinfo *gi = (glueinfo *) b0->bd_info; int i; /* If we're starting from scratch, start at the most general */ @@ -456,7 +456,7 @@ glue_tool_entry_next ( BackendDB *b0 ) { - glueinfo *gi = *(glueinfo **) (b0->bd_info+1); + glueinfo *gi = (glueinfo *) b0->bd_info; int i; ID rc; @@ -544,7 +544,7 @@ glue_tool_sync ( BackendDB *b0 ) { - glueinfo *gi = *(glueinfo **) (b0->bd_info+1); + glueinfo *gi = (glueinfo *) b0->bd_info; int i; /* just sync everyone */ @@ -598,18 +598,10 @@ glue_sub_init( ) */ b1->be_flags |= SLAP_BFLAG_GLUE_INSTANCE; 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; - *bi = *b1->bd_info; + gi->bd = *b1; + gi->bi = *b1->bd_info; + bi = (BackendInfo *)gi; bi->bi_open = glue_back_open; bi->bi_close = glue_back_close; bi->bi_db_open = glue_back_db_open; @@ -642,15 +634,10 @@ glue_sub_init( ) /* One more node for the master */ gi = (glueinfo *)ch_realloc(gi, 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 ); gi->nodes++; 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 */