]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/slapi/slapi_dn.c
Add ability to cache negative results and specify negative TTL on templates
[openldap] / servers / slapd / slapi / slapi_dn.c
index 4cb4b361a0ab61e98db0ba394599329eb32dc13f..9a0bae3204b4da7b0630dac7108fee7d480b8798 100644 (file)
@@ -1,7 +1,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 2005 The OpenLDAP Foundation.
+ * Copyright 2005-2006 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -215,9 +215,13 @@ void slapi_sdn_get_parent( const Slapi_DN *sdn, Slapi_DN *sdn_parent )
 {
        struct berval parent_dn;
 
-       dnParent( (struct berval *)&sdn->dn, &parent_dn );
-
-       slapi_sdn_set_dn_byval( sdn_parent, parent_dn.bv_val );
+       if ( !(sdn->flag & FLAG_DN) ) {
+               dnParent( (struct berval *)&sdn->ndn, &parent_dn );
+               slapi_sdn_set_ndn_byval( sdn_parent, parent_dn.bv_val );
+       } else {
+               dnParent( (struct berval *)&sdn->dn, &parent_dn );
+               slapi_sdn_set_dn_byval( sdn_parent, parent_dn.bv_val );
+       }
 }
 
 void slapi_sdn_get_backend_parent( const Slapi_DN *sdn,
@@ -263,7 +267,7 @@ int slapi_sdn_compare( const Slapi_DN *sdn1, const Slapi_DN *sdn2 )
 
 int slapi_sdn_isempty( const Slapi_DN *sdn)
 {
-       return ( BER_BVISEMPTY( &sdn->dn ) );
+       return ( BER_BVISEMPTY( &sdn->dn ) && BER_BVISEMPTY( &sdn->ndn ) );
 }
 
 int slapi_sdn_issuffix( const Slapi_DN *sdn, const Slapi_DN *suffix_sdn )
@@ -405,12 +409,12 @@ void slapi_rdn_set_dn( Slapi_RDN *rdn, const char *dn )
 
 void slapi_rdn_set_sdn( Slapi_RDN *rdn, const Slapi_DN *sdn )
 {
-       return slapi_rdn_set_dn( rdn, slapi_sdn_get_dn( sdn ) );
+       slapi_rdn_set_dn( rdn, slapi_sdn_get_dn( sdn ) );
 }
 
 void slapi_rdn_set_rdn( Slapi_RDN *rdn, const Slapi_RDN *fromrdn )
 {
-       return slapi_rdn_set_dn( rdn, fromrdn->bv.bv_val );
+       slapi_rdn_set_dn( rdn, fromrdn->bv.bv_val );
 }
 
 void slapi_rdn_free( Slapi_RDN **rdn )