X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Foverlays%2Frwmconf.c;h=a0856347751f1a678a659c3c269d45bba64494cb;hb=5a6cd2403f70be749037464a1ffd4ca1b8e1b4ea;hp=ce7776b5154d5fbecff6094efa4f9cb9995ad2a9;hpb=da6d9eb0463255782f3fa70c61fd958d94c048cf;p=openldap diff --git a/servers/slapd/overlays/rwmconf.c b/servers/slapd/overlays/rwmconf.c index ce7776b515..a085634775 100644 --- a/servers/slapd/overlays/rwmconf.c +++ b/servers/slapd/overlays/rwmconf.c @@ -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 */