]> git.sur5r.net Git - openldap/commitdiff
added function cache_find_entry_ndn2id that avoids an unnecessary call to dn_normaliz...
authorPierangelo Masarati <ando@openldap.org>
Wed, 11 Jul 2001 08:41:42 +0000 (08:41 +0000)
committerPierangelo Masarati <ando@openldap.org>
Wed, 11 Jul 2001 08:41:42 +0000 (08:41 +0000)
servers/slapd/back-ldbm/cache.c
servers/slapd/back-ldbm/dn2id.c
servers/slapd/back-ldbm/proto-back-ldbm.h

index ecd8de2ac93a99c35f66c5d58f188c221aaa3886..f87bb405f195e8dd9330d1d0f83b66d49394602e 100644 (file)
@@ -542,14 +542,33 @@ cache_find_entry_dn2id(
     Cache      *cache,
     const char         *dn
 )
+{
+       char                    *ndn;
+       ID                      id;
+
+       ndn = ch_strdup( dn );
+       (void) dn_normalize( ndn );
+
+       id = cache_find_entry_ndn2id( be, cache, ndn );
+
+       free( ndn );
+
+       return ( id );
+}
+
+ID
+cache_find_entry_ndn2id(
+       Backend         *be,
+    Cache      *cache,
+    const char         *ndn
+)
 {
        Entry           e, *ep;
        ID                      id;
        int count = 0;
 
-       e.e_dn = (char *) dn;
-       e.e_ndn = ch_strdup( dn );
-       (void) dn_normalize( e.e_ndn );
+       /* this function is always called with normalized DN */
+       e.e_ndn = (char *)ndn;
 
 try_again:
        /* set cache mutex */
@@ -589,7 +608,7 @@ try_again:
 #else
                        Debug(LDAP_DEBUG_TRACE,
                                "====> cache_find_entry_dn2id(\"%s\"): %ld (not ready) %d\n",
-                               dn, id, state);
+                               ndn, id, state);
 #endif
 
 
@@ -611,7 +630,7 @@ try_again:
 #else
                Debug(LDAP_DEBUG_TRACE,
                        "====> cache_find_entry_dn2id(\"%s\"): %ld (%d tries)\n",
-                       dn, id, count);
+                       ndn, id, count);
 #endif
 
 
@@ -622,8 +641,6 @@ try_again:
                id = NOID;
        }
 
-       free(e.e_ndn);
-
        return( id );
 }
 
index e680de1b56a4c0ada15391150b08d111bd3161a3..57340fd9a60b0f3b8d28bef42766e0c553d253a6 100644 (file)
@@ -134,7 +134,7 @@ dn2id(
        assert( idp );
 
        /* first check the cache */
-       if ( (*idp = cache_find_entry_dn2id( be, &li->li_cache, dn )) != NOID ) {
+       if ( (*idp = cache_find_entry_ndn2id( be, &li->li_cache, dn )) != NOID ) {
 #ifdef NEW_LOGGING
                LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
                           "dn2id: (%s)%ld in cache.\n", dn, *idp ));
index 079c947756938c2028595b17681ac33994f532dd..c6aecfdb95051554b271c662c396acdeb989b0a0 100644 (file)
@@ -53,6 +53,7 @@ void cache_return_entry_rw LDAP_P(( Cache *cache, Entry *e, int rw ));
 #define cache_return_entry_w(c, e) cache_return_entry_rw((c), (e), 1)
 
 ID cache_find_entry_dn2id LDAP_P(( Backend *be, Cache *cache, const char *dn ));
+ID cache_find_entry_ndn2id LDAP_P(( Backend *be, Cache *cache, const char *ndn ));
 Entry * cache_find_entry_id LDAP_P(( Cache *cache, ID id, int rw ));
 int cache_delete_entry LDAP_P(( Cache *cache, Entry *e ));
 void cache_release_all LDAP_P(( Cache *cache ));