]> git.sur5r.net Git - openldap/commitdiff
do not add hasSubordinates if already present (blind-fixes ITS#6712 for back-sql)
authorPierangelo Masarati <ando@openldap.org>
Thu, 18 Nov 2010 11:51:15 +0000 (11:51 +0000)
committerPierangelo Masarati <ando@openldap.org>
Thu, 18 Nov 2010 11:51:15 +0000 (11:51 +0000)
servers/slapd/back-sql/operational.c

index eee3aea706e9896ebfc8b099afb235847727a6c7..5057d5173e22933e743819beedfcec5294c183df 100644 (file)
@@ -123,7 +123,7 @@ backsql_operational(
        Debug( LDAP_DEBUG_TRACE, "==>backsql_operational(): entry \"%s\"\n",
                        rs->sr_entry->e_nname.bv_val, 0, 0 );
 
-       for ( ap = &rs->sr_operational_attrs; *ap; ap = &(*ap)->a_next ) {
+       for ( ap = &rs->sr_entry->e_attrs; *ap; ap = &(*ap)->a_next ) {
                if ( (*ap)->a_desc == slap_schema.si_ad_hasSubordinates ) {
                        get_conn--;
                        got[ BACKSQL_OP_HASSUBORDINATES ] = 1;
@@ -138,6 +138,27 @@ backsql_operational(
                }
        }
 
+       for ( ap = &rs->sr_operational_attrs; *ap; ap = &(*ap)->a_next ) {
+               if ( !got[ BACKSQL_OP_HASSUBORDINATES ] &&
+                       (*ap)->a_desc == slap_schema.si_ad_hasSubordinates )
+               {
+                       get_conn--;
+                       got[ BACKSQL_OP_HASSUBORDINATES ] = 1;
+
+               } else if ( !got[ BACKSQL_OP_ENTRYUUID ] && 
+                       (*ap)->a_desc == slap_schema.si_ad_entryUUID )
+               {
+                       get_conn--;
+                       got[ BACKSQL_OP_ENTRYUUID ] = 1;
+
+               } else if ( !got[ BACKSQL_OP_ENTRYCSN ] &&
+                       (*ap)->a_desc == slap_schema.si_ad_entryCSN )
+               {
+                       get_conn--;
+                       got[ BACKSQL_OP_ENTRYCSN ] = 1;
+               }
+       }
+
        if ( !get_conn ) {
                return 0;
        }