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;
}
+