]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-relay/init.c
ITS#3056 partial fix - from a slurpd perspective, the updatedn
[openldap] / servers / slapd / back-relay / init.c
index 295b037090bcd5f6fea8b07411f964b0a128294b..3122858fd6dc01f384f8b65b06fe7f64b2ada9dc 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.
  *
@@ -22,9 +22,6 @@
 
 #include <stdio.h>
 
-#include <ac/string.h>
-#include <ac/socket.h>
-
 #include "slap.h"
 #include "back-relay.h"
 
@@ -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;
 }
+