]> git.sur5r.net Git - openldap/commitdiff
Cleaner version of previous patch (keep operational attr code in backend.c)
authorLuke Howard <lukeh@openldap.org>
Fri, 22 Jul 2005 03:44:04 +0000 (03:44 +0000)
committerLuke Howard <lukeh@openldap.org>
Fri, 22 Jul 2005 03:44:04 +0000 (03:44 +0000)
servers/slapd/backend.c
servers/slapd/backover.c
servers/slapd/frontend.c
servers/slapd/proto-slap.h

index 0fded3e42177bbbe7b589217816141cf9c961ad6..a12bc48fed306bc8d2768531c343cb1beb17fbf4 100644 (file)
@@ -1558,6 +1558,55 @@ freeit:          if ( e != target ) {
        return rc;
 }
 
+int
+fe_aux_operational(
+       Operation *op,
+       SlapReply *rs )
+{
+       Attribute       **ap;
+       int             rc = 0;
+       BackendDB       *be_orig;
+
+       for ( ap = &rs->sr_operational_attrs; *ap; ap = &(*ap)->a_next )
+               /* just count them */ ;
+
+       /*
+        * If operational attributes (allegedly) are required, 
+        * and the backend supports specific operational attributes, 
+        * add them to the attribute list
+        */
+       if ( SLAP_OPATTRS( rs->sr_attr_flags ) || ( rs->sr_attrs &&
+               ad_inlist( slap_schema.si_ad_entryDN, rs->sr_attrs ) ) )
+       {
+               *ap = slap_operational_entryDN( rs->sr_entry );
+               ap = &(*ap)->a_next;
+       }
+
+       if ( SLAP_OPATTRS( rs->sr_attr_flags ) || ( rs->sr_attrs &&
+               ad_inlist( slap_schema.si_ad_subschemaSubentry, rs->sr_attrs ) ) )
+       {
+               *ap = slap_operational_subschemaSubentry( op->o_bd );
+               ap = &(*ap)->a_next;
+       }
+
+       if ( op->o_bd != NULL )
+       {
+               /* Let the overlays have a chance at this */
+               be_orig = op->o_bd;
+               if ( SLAP_ISOVERLAY( be_orig ) )
+                       op->o_bd = select_backend( be_orig->be_nsuffix, 0, 0 );
+
+               if ( ( SLAP_OPATTRS( rs->sr_attr_flags ) || rs->sr_attrs ) &&
+                       op->o_bd && op->o_bd->be_operational != NULL )
+               {
+                       rc = op->o_bd->be_operational( op, rs );
+               }
+               op->o_bd = be_orig;
+       }
+
+       return rc;
+}
+
 int backend_operational( Operation *op, SlapReply *rs )
 {
        int rc;
index f7167bfc510d969bb8c931739ccc62cd57e33b77..b3c06b04f4dd080228a7eaa090a7026acf7b82e5 100644 (file)
@@ -912,7 +912,7 @@ overlay_config( BackendDB *be, const char *ov )
                bi->bi_chk_controls = over_aux_chk_controls;
 
 #ifdef SLAP_OVERLAY_ACCESS
-               /* this has a specific arglist */
+               /* these have specific arglists */
                bi->bi_access_allowed = over_access_allowed;
                bi->bi_acl_group = over_acl_group;
                bi->bi_acl_attribute = over_acl_attribute;
index 1ae0233f2d732ed5c107a5d93b08d65a020c643b..d97e050889572b9706be0b310e68b044fe9f9493 100644 (file)
@@ -42,55 +42,6 @@ static BackendInfo   slap_frontendInfo;
 static BackendDB       slap_frontendDB;
 BackendDB      *frontendDB;
 
-static int
-fe_aux_operational(
-       Operation *op,
-       SlapReply *rs )
-{
-       Attribute       **ap;
-       int             rc = 0;
-       BackendDB       *be_orig;
-
-       for ( ap = &rs->sr_operational_attrs; *ap; ap = &(*ap)->a_next )
-               /* just count them */ ;
-
-       /*
-        * If operational attributes (allegedly) are required, 
-        * and the backend supports specific operational attributes, 
-        * add them to the attribute list
-        */
-       if ( SLAP_OPATTRS( rs->sr_attr_flags ) || ( rs->sr_attrs &&
-               ad_inlist( slap_schema.si_ad_entryDN, rs->sr_attrs ) ) )
-       {
-               *ap = slap_operational_entryDN( rs->sr_entry );
-               ap = &(*ap)->a_next;
-       }
-
-       if ( SLAP_OPATTRS( rs->sr_attr_flags ) || ( rs->sr_attrs &&
-               ad_inlist( slap_schema.si_ad_subschemaSubentry, rs->sr_attrs ) ) )
-       {
-               *ap = slap_operational_subschemaSubentry( op->o_bd );
-               ap = &(*ap)->a_next;
-       }
-
-       if ( op->o_bd != NULL )
-       {
-               /* Let the overlays have a chance at this */
-               be_orig = op->o_bd;
-               if ( SLAP_ISOVERLAY( be_orig ) )
-                       op->o_bd = select_backend( be_orig->be_nsuffix, 0, 0 );
-
-               if ( ( SLAP_OPATTRS( rs->sr_attr_flags ) || rs->sr_attrs ) &&
-                       op->o_bd && op->o_bd->be_operational != NULL )
-               {
-                       rc = op->o_bd->be_operational( op, rs );
-               }
-               op->o_bd = be_orig;
-       }
-
-       return rc;
-}
-
 int
 frontend_init( void )
 {
index 39b4cef11341df996f47d7fad199c8a17c49131a..04b46116d2500beba47e9cbe06b19abadaf83d59 100644 (file)
@@ -1634,6 +1634,7 @@ LDAP_SLAPD_F (int) fe_op_delete LDAP_P((Operation *op, SlapReply *rs));
 LDAP_SLAPD_F (int) fe_op_modify LDAP_P((Operation *op, SlapReply *rs));
 LDAP_SLAPD_F (int) fe_op_modrdn LDAP_P((Operation *op, SlapReply *rs));
 LDAP_SLAPD_F (int) fe_op_search LDAP_P((Operation *op, SlapReply *rs));
+LDAP_SLAPD_F (int) fe_aux_operational LDAP_P((Operation *op, SlapReply *rs));
 #if 0
 LDAP_SLAPD_F (int) fe_op_unbind LDAP_P((Operation *op, SlapReply *rs));
 #endif