]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/backover.c
No LogTest in RE23
[openldap] / servers / slapd / backover.c
index 4f5d1042f92a2cb4367dce7d72a4cbfbf7d994e6..5585f9a2ff4c49b9861d5cebae956cad3c318dd9 100644 (file)
@@ -2,7 +2,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 2003-2005 The OpenLDAP Foundation.
+ * Copyright 2003-2006 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -137,6 +137,9 @@ over_db_config(
        ca.fname = fname;
        ca.lineno = lineno;
        ca.be = be;
+       snprintf( ca.log, sizeof( ca.log ), "%s: line %d",
+                       ca.fname, ca.lineno );
+
        for (; on; on=on->on_next) {
                rc = SLAP_CONF_UNKNOWN;
                if (on->on_bi.bi_cf_ocs) {
@@ -249,7 +252,7 @@ over_access_allowed(
 {
        slap_overinfo *oi;
        slap_overinst *on;
-       BackendInfo *bi = op->o_bd->bd_info;
+       BackendInfo *bi;
        BackendDB *be = op->o_bd, db;
        int rc = SLAP_CB_CONTINUE;
 
@@ -257,7 +260,13 @@ over_access_allowed(
         * when global overlays are used... */
        assert( op->o_bd != NULL );
 
-       oi = op->o_bd->bd_info->bi_private;
+       bi = op->o_bd->bd_info;
+       /* Were we invoked on the frontend? */
+       if ( !bi->bi_access_allowed ) {
+               oi = frontendDB->bd_info->bi_private;
+       } else {
+               oi = op->o_bd->bd_info->bi_private;
+       }
        on = oi->oi_list;
 
        for ( ; on; on = on->on_next ) {
@@ -795,7 +804,6 @@ overlay_is_inst( BackendDB *be, const char *over_type )
 int
 overlay_register_control( BackendDB *be, const char *oid )
 {
-       int             rc = 0;
        int             gotit = 0;
        int             cid;
 
@@ -818,12 +826,12 @@ overlay_register_control( BackendDB *be, const char *oid )
 
        }
        
-       if ( rc == 0 && !gotit ) {
+       if ( !gotit ) {
                be->be_ctrls[ cid ] = 1;
                be->be_ctrls[ SLAP_MAX_CIDS ] = 1;
        }
 
-       return rc;
+       return 0;
 }
 
 void
@@ -868,6 +876,7 @@ overlay_config( BackendDB *be, const char *ov )
                oi = ch_malloc( sizeof( slap_overinfo ) );
                oi->oi_orig = be->bd_info;
                oi->oi_bi = *be->bd_info;
+               oi->oi_origdb = be;
 
                /* NOTE: the first time a global overlay is configured,
                 * frontendDB gets this flag; it is used later by overlays