]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/overlays/rwmconf.c
Revert prev commit (ITS#5367)
[openldap] / servers / slapd / overlays / rwmconf.c
index e02ccb5ae7bf1e9d35cb1719784335c36fa7c335..d612712f0e7f0f87ee0e9151db30f90307fb4758 100644 (file)
@@ -2,7 +2,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1999-2006 The OpenLDAP Foundation.
+ * Copyright 1999-2008 The OpenLDAP Foundation.
  * Portions Copyright 1999-2003 Howard Chu.
  * Portions Copyright 2000-2003 Pierangelo Masarati.
  * All rights reserved.
@@ -47,6 +47,7 @@ rwm_map_config(
        struct ldapmapping      *mapping;
        char                    *src, *dst;
        int                     is_oc = 0;
+       int                     rc = 0;
 
        if ( argc < 3 || argc > 4 ) {
                fprintf( stderr,
@@ -73,7 +74,7 @@ rwm_map_config(
        if ( strcmp( argv[2], "*" ) == 0 ) {
                if ( argc < 4 || strcmp( argv[3], "*" ) == 0 ) {
                        map->drop_missing = ( argc < 4 );
-                       return 0;
+                       goto success_return;
                }
                src = dst = argv[3];
 
@@ -148,13 +149,6 @@ rwm_map_config(
                                        fname, lineno, dst );
                                goto error_return;
                        }
-
-#if 0
-                       mapping[0].m_dst_oc = ch_malloc( sizeof( ObjectClass ) );
-                       memset( mapping[0].m_dst_oc, 0, sizeof( ObjectClass ) );
-                       mapping[0].m_dst_oc->soc_cname = mapping[0].m_dst;
-                       mapping[0].m_flags |= RWMMAP_F_FREE_DST;
-#endif
                }
                mapping[1].m_src_oc = mapping[0].m_dst_oc;
 
@@ -230,7 +224,13 @@ rwm_map_config(
        avl_insert( &map->remap, (caddr_t)&mapping[1],
                                rwm_mapping_cmp, rwm_mapping_dup );
 
-       return 0;
+success_return:;
+       if ( !is_oc && map->map == NULL ) {
+               /* only init if required */
+               rc = rwm_map_init( map, &mapping ) != LDAP_SUCCESS;
+       }
+
+       return rc;
 
 error_return:;
        if ( mapping ) {
@@ -240,7 +240,6 @@ error_return:;
        return 1;
 }
 
-#ifdef ENABLE_REWRITE
 static char *
 rwm_suffix_massage_regexize( const char *s )
 {
@@ -406,6 +405,5 @@ rwm_suffix_massage_config(
 
        return 0;
 }
-#endif /* ENABLE_REWRITE */
 
 #endif /* SLAPD_OVER_RWM */