]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-relay/init.c
limit checking in syncrepl
[openldap] / servers / slapd / back-relay / init.c
index 295b037090bcd5f6fea8b07411f964b0a128294b..e448ec1185ffdb763ad1226056a95a614241911b 100644 (file)
@@ -1,7 +1,7 @@
 /* init.c - initialize relay backend */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 2003-2004 The OpenLDAP Foundation.
+ * Copyright 2004 The OpenLDAP Foundation.
  * Portions Copyright 2004 Pierangelo Masarati.
  * All rights reserved.
  *
 
 #include <stdio.h>
 
-#include <ac/string.h>
-#include <ac/socket.h>
-
 #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;
 }
+