]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/overlays/rwmmap.c
More accesslog updates
[openldap] / servers / slapd / overlays / rwmmap.c
index e551f3568a30d9cca49a96cec965b4c5893231d9..bfa40a1de139ac0224b044084bdeca59e9560bf1 100644 (file)
@@ -386,7 +386,8 @@ map_attr_value(
        if ( value != NULL ) {
                assert( mapped_value != NULL );
 
-               if ( ad->ad_type->sat_syntax == slap_schema.si_syn_distinguishedName )
+               if ( ad->ad_type->sat_syntax == slap_schema.si_syn_distinguishedName
+                               || ( mapping != NULL && mapping->m_dst_ad->ad_type->sat_syntax == slap_schema.si_syn_distinguishedName ) )
                {
                        dncookie        fdc = *dc;
                        int             rc;
@@ -449,8 +450,18 @@ rwm_int_filter_map_rewrite(
                        vtmp,
                        tmp;
        static struct berval
+#if 0
                        ber_bvfalse = BER_BVC( "(?=false)" ),
+#endif
+                       /* better than nothing... */
+                       ber_bvfalse = BER_BVC( "(!(objectClass=*))" ),
+                       ber_bvtf_false = BER_BVC( "(|)" ),
+#if 0
                        ber_bvtrue = BER_BVC( "(?=true)" ),
+#endif
+                       /* better than nothing... */
+                       ber_bvtrue = BER_BVC( "(objectClass=*)" ),
+                       ber_bvtf_true = BER_BVC( "(&)" ),
                        ber_bvundefined = BER_BVC( "(?=undefined)" ),
                        ber_bverror = BER_BVC( "(?=error)" ),
                        ber_bvunknown = BER_BVC( "(?=unknown)" ),
@@ -665,11 +676,19 @@ rwm_int_filter_map_rewrite(
        case SLAPD_FILTER_COMPUTED:
                switch ( f->f_result ) {
                case LDAP_COMPARE_FALSE:
-                       tmp = ber_bvfalse;
+                       if ( dc->rwmap->rwm_flags & RWM_F_SUPPORT_T_F ) {
+                               tmp = ber_bvtf_false;
+                       } else {
+                               tmp = ber_bvfalse;
+                       }
                        break;
 
                case LDAP_COMPARE_TRUE:
-                       tmp = ber_bvtrue;
+                       if ( dc->rwmap->rwm_flags & RWM_F_SUPPORT_T_F ) {
+                               tmp = ber_bvtf_true;
+                       } else {
+                               tmp = ber_bvtrue;
+                       }
                        break;
                        
                case SLAPD_COMPARE_UNDEFINED:
@@ -806,7 +825,8 @@ rwm_referral_rewrite(
        }
 
        for ( i = 0; !BER_BVISNULL( &a_vals[i] ); i++ ) {
-               struct berval   olddn, oldval;
+               struct berval   olddn = BER_BVNULL,
+                               oldval;
                int             rc;
                LDAPURLDesc     *ludp;
 
@@ -1058,7 +1078,8 @@ rwm_referral_result_rewrite(
        last--;
 
        for ( i = 0; !BER_BVISNULL( &a_vals[i] ); i++ ) {
-               struct berval   dn, olddn;
+               struct berval   dn,
+                               olddn = BER_BVNULL;
                int             rc;
                LDAPURLDesc     *ludp;