X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fback-relay%2Finit.c;h=e448ec1185ffdb763ad1226056a95a614241911b;hb=3917d2b15dad2220e1263af60c742bf93884c986;hp=295b037090bcd5f6fea8b07411f964b0a128294b;hpb=737f3d8636bbc731c7673be4fd4a51ffef89ea77;p=openldap diff --git a/servers/slapd/back-relay/init.c b/servers/slapd/back-relay/init.c index 295b037090..e448ec1185 100644 --- a/servers/slapd/back-relay/init.c +++ b/servers/slapd/back-relay/init.c @@ -1,7 +1,7 @@ /* init.c - initialize relay backend */ /* This work is part of OpenLDAP Software . * - * Copyright 2003-2004 The OpenLDAP Foundation. + * Copyright 2004 The OpenLDAP Foundation. * Portions Copyright 2004 Pierangelo Masarati. * All rights reserved. * @@ -22,13 +22,10 @@ #include -#include -#include - #include "slap.h" #include "back-relay.h" -#ifdef SLAPD_RELAY_DYNAMIC +#if SLAPD_RELAY == SLAPD_MOD_DYNAMIC int init_module( int argc, char *argv[] ) { @@ -42,7 +39,7 @@ init_module( int argc, char *argv[] ) { return 0; } -#endif /* SLAPD_RELAY_DYNAMIC */ +#endif /* SLAPD_RELAY */ int relay_back_initialize( BackendInfo *bi ) @@ -95,6 +92,9 @@ relay_back_db_init( Backend *be ) } ri->ri_bd = NULL; + ri->ri_realsuffix.bv_val = NULL; + ri->ri_realsuffix.bv_len = 0; + ri->ri_massage = 0; be->be_private = (void *)ri; @@ -108,20 +108,11 @@ relay_back_db_open( Backend *be ) assert( ri != NULL ); -#if 0 - if ( !ri->ri_do_not_massage ) { - char *argv[ 4 ]; - - argv[ 0 ] = "suffixmassage"; - argv[ 1 ] = be->be_suffix[0].bv_val; - argv[ 2 ] = ri->ri_bd->be_suffix[0].bv_val; - argv[ 3 ] = NULL; - - if ( be->be_config( be, "back-relay", 1, 3, argv ) ) { - return 1; - } + if ( ri->ri_realsuffix.bv_val != NULL ) { + ri->ri_bd = select_backend( &ri->ri_realsuffix, 0, 1 ); + /* must be there: it was during config! */ + assert( ri->ri_bd ); } -#endif return 0; } @@ -138,8 +129,12 @@ relay_back_db_destroy( Backend *be ) relay_back_info *ri = (relay_back_info *)be->be_private; if ( ri ) { + if ( ri->ri_realsuffix.bv_val ) { + ch_free( ri->ri_realsuffix.bv_val ); + } ch_free( ri ); } return 0; } +