]> git.sur5r.net Git - openldap/commitdiff
More streamlining.
authorHoward Chu <hyc@openldap.org>
Thu, 28 Nov 2002 15:47:06 +0000 (15:47 +0000)
committerHoward Chu <hyc@openldap.org>
Thu, 28 Nov 2002 15:47:06 +0000 (15:47 +0000)
servers/slapd/backglue.c

index 1e4a81dd4f21566aca11f56cc0b3cf19942b2ae9..1195aad687943004fcae78be55940770978e32fb 100644 (file)
@@ -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 */